Tag: nsmanagedobject

在Swift中设置一个NSManagedObject关系

在Swift的NSManagedObject子类中,如何将对象添加到关系属性中? 在Objective-C中,当从数据模型生成Xcode中的NSManagedObject子类时,会自动生成类扩展,其中包含如下声明: @interface MyManagedObject (CoreDataGeneratedAccessors) – (void)addMySubObject: (MyRelationshipObject *)value; – (void)addMySubObjects: (NSSet *)values; @end 但是,Xcode目前缺lessSwift类的这个类生成能力。 如果我尝试直接在Swift对象上调用等价的方法: myObject.addSubObject(subObject) …我在方法调用中遇到编译器错误,因为这些生成的访问器不可见。 我已经将关系属性声明为@NSManaged ,如文档中所述。 还是必须恢复到具有关系的数据模型的Objective-C对象?

对NSManagedObject属性值进行NSNull处理

我为我的NSManagedObject属性设置值,这些值来自NSDictionary正确序列化从JSON文件。 我的问题是,当某些值是[NSNull null] ,我不能直接分配给属性: fight.winnerID = [dict objectForKey:@"winner"]; 这将抛出一个NSInvalidArgumentException "winnerID"; desired type = NSString; given type = NSNull; value = <null>; 我可以很容易地检查[NSNull null]的值,并分配nil : fight.winnerID = [dict objectForKey:@"winner"] == [NSNull null] ? nil : [dict objectForKey:@"winner"]; 但是我认为这不是很高雅,而且有很多属性需要设置。 而且,当处理NSNumber属性时,这变得更加困难: fight.round = [NSNumber numberWithUnsignedInteger:[[dict valueForKey:@"round"] unsignedIntegerValue]] NSInvalidArgumentException现在是: [NSNull unsignedIntegerValue]: unrecognized selector sent to instance 在这种情况下,我必须先处理[dict valueForKey:@"round"]然后再创build它的NSUInteger值。 而一线解决scheme不见了。 […]

Swift + CoreData:不能在生成的NSManagedObject子类上自动设置可选属性

我有一个名为Record的coredata实体,并有一个属性dateUpdated。 我注意到生成的NSManagedObject子类没有可选标记(?) CoreData编辑器: 生成的子类: 预期: 更新:在我的部分是乏味的 ,因为每次我想重新生成子类,这意味着我也需要手动更新所有可选值。 在子类中有一个非可选的(不带'?')会导致在赋值之前检查evalue,如下例所示: // sample value: // serverDateFormatter = "yyyy/MM/dd" // dateString = "" // Branch is a subclass of Record (see above images) var date = self.coreData.serverDateFormatter.dateFromString(dateString) if date != nil { branch.dateUpdated = date } 但是,如果xcode可以用(?)自动设置子类中的可选值,我只需要这样做: branch.dateUpdated = self.coreData.serverUTCDateFormatter.dateFromString(dateString) 在我的情况下,我有一堆属性,我需要手动标记为可选。

在自动代码中无效重新生成NSManagedObject Subclass Swift 3

使用Xcode的8.1版本。 在.xcdatamodeld文件中创build一个名为“MapRegionObject”的实体。 使用自动代码生成器,单击导航栏上的编辑器 – >创buildNSManagedOject子类… 有两个文件:MapRegionObject + CoreDataClass.swift和MapRegionObject + CoreDataProperties 在截图中显示两个文件中的错误:MapRegionObject + CoreDataClass.swift MapRegionObject + CoreDataProperties 请帮我修复这个bug,非常感谢你!

有没有办法实例化NSManagedObject而不插入它?

我有一个用户界面来插入一个事务。 一旦用户点击一个加号,他得到的屏幕,我想实例化我的核心数据NSManagedObject实体,让用户在它上面工作。 然后当用户点击保存button,我将调用保存function。 所以下来代码: transaction = (Transaction *)[NSEntityDescription insertNewObjectForEntityForName:@"Transaction" inManagedObjectContext:self.managedObjectContext]; //even if i dont call save: its going to show up on my table [self.managedObjectContext save:&error] PS我在该表上使用NSFetchedResultsController,我看到NSFetchedResultsController插入一个节和一个对象的表。 我的想法是,如果有一种方法来实例化事务NSManagedObject我可以更新与保存,直到客户端select。

如何将NSManagedObject从一个上下文复制或移动到另一个上下文?

我有我认为是一个相当标准的设置,一个暂时保存从未保存(包含从网上下载的一堆对象)和另一个持久对象的永久MOC暂停MOC。 当用户从scratchMOC中select一个对象添加到她的库中时,我想要1)从scratchMOC中移除该对象并插入到permanentMOC中,或者2)将该对象复制到permanentMOC中。 核心数据常见问题说我可以像这样复制一个对象: NSManagedObjectID *objectID = [managedObject objectID]; NSManagedObject *copy = [context2 objectWithID:objectID]; (在这种情况下,context2将是permanentMOC。)但是,当我这样做时,复制的对象是故障的; 数据最初是未解决的。 当它得到解决后,所有的值都是零; 来自原始managedObject的数据(属性或关系)都没有被实际复制或引用。 因此,我看不出使用这个objectWithID:方法之间的任何区别,只是插入一个全新的对象到永久MOC使用insertNewObjectForEntityForName :. 我意识到我可以在permanentMOC中创build一个新对象,并手动复制旧对象中的每个键值对,但是我对这个解决scheme并不满意。 (我有一些不同的pipe理对象,我有这个问题,所以我不想写和更新副本:所有的方法,因为我继续开发。)有没有更好的办法?

XCode 8为iOS 10生成破坏的NSManagedObject子类

我最近更新了我的iOS应用程序项目到iOS 10.现在我试图改变我的应用程序的核心数据模型,但Xcode生成的新的NSManagedObject子类被打破。 我也试图修复子类手册,但这是行不通的。 核心数据模型的最低工具版本设置为Xcode 7.0,代码生成语言设置为Swift。 这是Xcode生成的代码: import Foundation import CoreData import extension Group { @nonobjc public class func fetchRequest() -> NSFetchRequest { return NSFetchRequest(entityName: "Group"); } @NSManaged public var name: String? @NSManaged public var platform: NSNumber? @NSManaged public var profiles: NSOrderedSet? } // MARK: Generated accessors for profiles extension Group { @objc(insertObject:inProfilesAtIndex:) @NSManaged public func […]

如何跟踪/观察子图内的所有更改?

我有一个NSManagedObjectContext,其中有一些NSManagedObjects的子类,有些是其他人的容器。 我想要做的就是观察一个顶级对象,通知它的任何属性,关联,或者它所包含的任何对象的属性/关联。 使用上下文的“hasChanges”没有给我足够的粒度。 对象的“isUpdated”方法只适用于给定的对象(而不是其关联中的任何东西)。 是否有一个方便的(也许,基于KVO的)我是否可以观察局限于一个子图的上下文的变化?

我怎么知道一个`NSManagedObject`是否被删除?

我有一个NSManagedObject已被删除,并且包含该托pipe对象的上下文已被保存。 我明白,如果核心数据将要求持久性存储在下一次保存操作中删除对象,则返回YES 。 但是,由于保存已经发生, isDeleted返回NO 。 什么是一个很好的方法来告诉NSManagedObject是否已被删除,其中包含的上下文已被保存? (如果你想知道为什么引用被删除的pipe理对象的对象还没有意识到删除,那是因为删除和上下文保存是由执行删除操作并使用performSelectorOnMainThread:withObject:waitUntilDone:保存的后台线程启动的performSelectorOnMainThread:withObject:waitUntilDone: 。)

与ARC的@属性定义:强或保留?

使用Xcode 4.2和ARC,我注意到NSManagedObject的自动生成的代码仍然读取像这样的属性: @property (nonatomic, retain) NSString * someString; 1)现在不应该retain weak吗? 2)为什么自动生成的代码仍然使用retain 3)什么是在这个财产声明retain正确的替代? 我目前正在使用NSFetchRequestdebugging一个问题,我认为这可能是问题的根源。 思考?