Tag: nsmanagedobject

核心数据—将NSManagedObject数组转换为json数组

我在coredata上工作,我想将ManagedObject数组转换为json数组。 作为核心数据的新手,我确实进行了大量搜索,但未能找到满意的答案。 在工作并了解了结构之后,这里是相同的示例代码 func convertToJSONArray(moArray:[NSManagedObject])->任意{ var jsonArray:[[String:Any]] = [] 用于moArray { var dict:[String:Any] = [:] 用于item.entity.attributesByName { //检查是否存在值,然后将键添加到字典中,以避免nil值崩溃 如果让值= item.value(forKey:attribute.key){ dict [attribute.key] =值 } } jsonArray.append(dict) } 返回jsonArray } 此代码忽略了那些可选的键和值,这些键和值在核心数据存储中没有值(或nil值)。 由于此处的参数类型是NSManagedObject(这是所有实体的超类),因此您可以将任何ManagedObject的数组传递给此函数。 例如,Person,Employee等,或核心数据实体中的任何ManagedObjects。 编码愉快🙂!!!!!!

没有上下文类型可编码,无法解析对成员的引用

在这里,我想分享一下我的经验,即为NSManagedObject类实现Codable协议时解决此编译错误。 当我们尝试编码NSSet类型的汽车对象时,就会出现错误。 汽车对象是CoreData NSManagedObject生成的类。 解决方案:经过广泛研究,我们必须达到的解决方案是在支持Objective C对象方面,codable存在一些潜在问题。 NSSet是Objective C类型。 因此,将NSSet更改为Set可以解决编译问题并发挥作用。 学分到 :Sathiyanarayanan,印度钦奈 如有任何疑问,请随时通过pratheesh_db@hotmail.com与我联系。

Swift 4中的可编码NSManagedObject(核心数据)和CLLocation

在进入主题之前,让我们先讨论一下编码。 可编码 CODE是Swift 4的新功能。它是Decodable协议的类型别名 和可编码协议。 typealias可编码=可分解和可编码 可以反序列化Decodable符合的枚举/结构/类。 例如,将json对象反序列化为结构。 // 宣言 struct Person:可分解{ 命名:字符串 } //反序列化 让jsonString =“”“ { “名称”:“郑正祥” } “” 如果让jsonData = jsonString.data(使用:.utf8){ 让人=尝试? JSONDecoder()。decode(Person.self,来自:jsonData) } Encodable遵循的 enum / struct / class可以序列化。 例如,一个结构被序列化为一个json对象。 // 宣言 结构人:可编码{ 命名:字符串 } //序列化 let person = Person(姓名:“郑正祥”) 让jsonData =试试吗? JSONEncoder()。encode(person) 上面的示例非常简单,但是显示了2个要点 。 如果自定义类型的所有属性都是可编码的,则它是可编码的。 字符串,整数,双精度型, 数据和URL是内置的可编码类型,因此Person是可编码的。 让我们看一个反例。 结构资产{ let属性:Int […]

处理来自服务器的JSON数据并添加/更新CoreData中的对象

我正在使用coreData的应用程序,我有两个实体称为文件夹和笔记 。 所以他们是文件夹 – >笔记之间的一对多关系 。 即1文件夹=许多笔记。 我已经使用了文件夹的抓取结果控制器 ,并且它显示在UITableView上,当用户单击一个文件夹时,他转到注释表,该注释表在特定文件夹内显示注释。 用户可以添加和删除文件夹/注释。 一切工作正常。 这里的一切都离线了。 现在我试图与服务器同步这个数据,以便我可以将这个数据同步到多个设备。 我不做盲目同步,我只同步更改的数据。 我使用NSURLConnection默认是asynchronous的 ,它具有从服务器提供json数据的委托函数。 现在我正在尝试处理这个JsonData ,我正在遵循FindOrCreate方法。 所以如果文件夹/ Notes存在,那么只需要更新它或者创build一个新的文件并保存coreData。 我正在使用相同的managedObject和后处理发生在主线程。 面临的问题。 (这是现实世界的案例) 1)当拉动发生,用户可能会添加新的文件夹/笔记和UI应该是响应,但在我的情况下UI卡住了 。 所以我想知道如何stream畅地创build/更新来自服务器的新数据,并且UI也是响应式的。 2)我尝试使用后台队列中的后台进程 dispatch_async(dispatch_get_global_queue(0,0),^ { } 但在这里我观察到的是,我得到一个崩溃,其中说*终止应用程序由于未捕获exception'NSGenericException',原因:'*集合<__ NSCFSet:0x1557ecd0>被列举时发生了变异。

合并到父/主上下文后,子上下文对象变空

我正在使用核心数据的multithreading应用程序。 具有讽刺意味的是,当我得知Core Data不是线程安全的时候,我认为应用程序已经接近完成了…因此,我现在添加了多上下文,而不是从Xcode模板获得的单一上下文一直工作到目前为止,真的,但是这比我所猜测的技巧更有运气) 我试图使用与父/子上下文,这将适合我想要做的,但是当我在我的子上下文中插入有效的数据/属性的有效的对象的iOS 5.0的方法,他们都成为零,或0(取决于属性types)在父上下文中。 我注意到有类似的post,但没有任何答案。 家长MOC获取来自儿童MOC的空数据的变化 NSManagedObject值是正确的,然后在从父对象到子对象NSManagedObjectContext合并更改时不正确 这里有一些代码来获得这个想法。 我有一个单独的pipe理器,用户界面用来“做东西”,然后在任务完成时使用委托或callback。 那个经理又有一个模型pipe理者来处理持久的数据pipe理,还有一些其他的comm-managers跟web / REST-API等等。 – (void) doSomeStuff:(NSString*)someParam callbackObject:(NSObject*)object onSuccess:(SEL)successSelector onFailure:(SEL)failureSelector { //Kick as an async thread since we don't want to disturb the UI dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, (unsigned long)NULL), ^(void) { //Ask model manager for a nice context to work with… //NOTE; All contexts (private ones) are stored […]

怪异的核心数据反应 – 不检测NSManagedObject子类

在我使用Core Data应用程序中似乎有一个非常奇怪的错误。 我已经处理了所有需要的东西,并且像最近几周一样工作。 我昨天closures了项目,今天开始开发( 没有修改代码 ),现在每当我想添加一行到我的数据库,我得到一个exception,说下面的类不是NSManagedObject的子NSManagedObject ,我可笑地肯定是不正确的,首先是因为它工作了几天,第二,因为我自动生成NSManagedObject子类。 我尝试使用Editor->Create NSManagedObject Subclasses在我的数据模型中Editor->Create NSManagedObject Subclasses重新生成类,但它根本没有帮助我。 这真是奇怪,我得到这个例外蓝色突然没有甚至在我的代码修改行:( 有人有什么想法? 我真的很感激任何帮助。 谢谢 顺便说一句,这里有一些代码可以帮助: 错误 : Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '"Message" is not a subclass of NSManagedObject. 消息类别头文件(自动生成): #import <Foundation/Foundation.h> #import <CoreData/CoreData.h> @class File; @interface Message : NSManagedObject @property (nonatomic, retain) NSString * data; @property (nonatomic, retain) NSDate […]

ManagedObject的子实体的关系给出错误的对象

为了减less冗余数据,我做了User的父实体。 患者和助产士都是用户的子女。 唯一的附加数据是,助产士有一套病人,病人可以有一套助产士。 当我将pipe理对象填充到核心数据时,它会显示它们与正确对象的关系。 问题是,当我尝试使用User类检索对象时,ManagedObject的关系指向错误的对象(它实际上指向同一个ManagedObject)。 我使用谓词查询核心数据NSString *predicateString = [NSString stringWithFormat:@"username == '%@' AND password == '%@'", username, password]; 当我尝试使用我的帮助器方法login时,我检查是否该对象是一个助产士或患者,所以我知道要调用什么关系。 但是这种关系指向了错误的对象。 [User userWithUsername:username password:password success:^(id user) { if([user isKindOfClass:[Midwife class]]) { NSLog(@"Midwife : %@", [user fullName]); dispatch_sync(dispatch_get_main_queue(), ^{ [self performSegueWithIdentifier:@"midwifeDashboard" sender:self]; }); } else if([user isKindOfClass:[Patient class]]) { NSLog(@"Patient : %@", [user fullName]); dispatch_sync(dispatch_get_main_queue(), ^{ [self […]

input不匹配问题,同时添加到coredata数组

我已经在alertview文本字段中的数据添加到像这样的coredata的对象… let category = Category(context: self.context) category.alertTextFieldData = (alertController.textFields?.first?.text)! 但是现在我想把这个添加到我正在尝试这样做的CoreData数组中… self.people.append(category.alertTextFieldData!) 但是当我这样做,它会给出错误.. 'Cannot convert value of type 'String' to expected argument type 'Category'' 其中Category是实体名称。 那我该如何解决这个问题呢?

使用核心数据访问检索到的pipe理对象中的数据

我试图访问检索到的pipe理对象中的数据。 Xcode给我错误“不能下标一个值types”[AnyObject]?“与索引types”int“”。 有没有人知道我该怎么做? 谢谢 这是我的方法,它保存数据,并从我的viewDidLoad方法调用: // save data func saveData (jmeno:String, adresa:String, telefon:String) { // delegate let delegate = UIApplication.sharedApplication().delegate as! AppDelegate // managed object context let managedObjectContext = delegate.managedObjectContext // entity description let entityDescription = NSEntityDescription.entityForName("Contacts", inManagedObjectContext: managedObjectContext!) // instance let contact = Contacts(entity: entityDescription!, insertIntoManagedObjectContext: managedObjectContext!) // ukládání do attributů contact.name = jmeno […]

RestKit 0.22:如何映射只有一个数组的firstObject?

我正在接收比需要更多的数据:我只想映射对象数组的第一个对象。 使用RestKit 0.22,如何映射下面的Json: { "name": "foobar", "tags": ["tag1", "tag2", "tag3"] } 使用以下模型: @property (nonatomic, retain) NSString *name; @property (nonatomic, retain) NSString *firstTag; 要映射name ,我有这样的代码: RKEntityMapping *mapping = [RKEntityMapping mappingForEntityForName:@"MyObjectModel" inManagedObjectStore:[RKManagedObjectStore defaultStore]]; [mapping addAttributeMappingsFromDictionary:@{@"name": @"name"}]; 要将firstObject的tags映射到firstTag ,我不知道如何继续。 注意: MyObjectModel是一个NSManagedObject ,所以firstTag是@dynamic 。