草庐IT

nsmanagedobject

全部标签

ios - 最佳实践 : exposing NSManagedObject in framework

我正在iOS中创建一个包含即时消息功能的库/框架,使用CoreData(加上MagicalRecord和Mogenerator)来存储消息和对话。我主要有两个NSManagedObject类:Message和Conversation。例如,在Message中,我有一些创建实体的类方法(例如[MessagecreateMessage]和一些查询表的实例方法(例如[messagegetLatestMessages])。我的问题是,在我的框架Message和Conversation(以及它们所有的公共(public)方法)中公开公开多少才是一个好的做法。我应该采取不同的方法,比如用其他类包装

ios - 更新大量 NSManagedObject 的有效方法

这类问题的题挺多的,可是我找不到CoreData的。问题是:我想更新大量的NSManagedObject(你可以考虑重置大量NSManagedObject的属性)。目前我能想到的是:Fetchallobject.Loopthroughallofit,usingforin-loop.Settingthepropertyineachforblock.可能数据比较大,我也想为这个action写一个Utility。所以问题是:有没有更有效的方法来执行此操作?我不认为使用for循环是有效的。奖金问题此外,我想删除所有满足条件(很可能是bool标志)的对象。我的解决方案与上面的解决方案相当简单:F

ios - 在 UIViewControllers 中传递 NSManagedObjects 的方法

在一个应用程序中,可能有不同的UIViewController需要共享相同的NSManagedObject。我通常会执行以下操作:@interfaceCustomController:UIViewController@property(nonatomic,retain)ProductNSManagedObject*productManaged;@end然后,当我实例化CustomController时,我会像下面这样注入(inject)它:customController.productManaged=....一旦完成,CustomController负责释放它。这种方法效果很好(我不

ios - 使用快速枚举删除 NSManagedObject 是否安全?

您不应该修改正在使用快速枚举迭代的集合,但我不确定修改到什么程度。下面的代码没有给我带来任何问题,但我不确定是不是我运气好。有没有人有明确的答案?for(NSManagedObject*myObjectinmyArray){[myObject.managedObjectContextdeleteObject:myObject];}所以我并没有真正修改数组,而是从上下文中删除了对象,这可能只是间接修改了数组,但我不确定.. 最佳答案 只要不改变数组本身,您可以对数组中的对象做任何您想做的事情。该代码是完全可以接受的。但是请注意,如果您

ios - NSManagedObject 上的属性为空

我正在nil托管对象上下文中创建NSManagedObject的实例,因为我不希望保存对象,除非用户稍后选择。我通过创建带有上下文的实体描述,然后在没有上下文的情况下创建对象本身来做到这一点。如下所示。NZVideo*video=nil;if([[tempVideoobjectForKey:_kResponseVideoTypeKey]isEqualToString:_kVideoTypeYouTube]==YES){NSEntityDescription*entityDescription=[NZYouTubeVideoentityDescriptionInContext:[NSMa

ios - 你如何在 block 之间访问 NSManagedObject?

正如标题所说,如何访问在一个block中创建然后需要在另一个block中访问的NSManagedObject。我有以下实现,想知道它是否正确。__blockPerson*newPerson;@weakify(self);[MagicalRecordsaveWithBlock:^(NSManagedObjectContext*localContext){newPerson=[PersonMR_createInContext:localContext];newPerson.name=@"Bob";}completion:^(BOOLsuccess,NSError*error){@stron

ios - 尝试保存数组时 CoreData 出错。 'Cannot convert value of type ' String' 到预期参数类型 'NSManagedObject' '

我正在使用CoreData将tableView保存到设备。我对CoreData比较陌生,无法弄清楚这一点。我收到错误:'Cannotconvertvalueoftype'String'toexpectedargumenttype'NSManagedObject''线上:favourites.append(addNewMemory.text!)//MARK:-CoreDatafuncsave(name:String){guardletappDelegate=UIApplication.shared.delegateas?AppDelegateelse{return}//1letmanag

ios - 使用 NSKeyedArchiver 从保存在 NSDictionary 中的 NSManagedObjects 生成 XML

我有一个NSDictionary,其中包含一堆NSManagedObject。然后我可以使用NSKeyedArchiver将其写入NSData对象。这些是使用thismethod.生成的哪个工作正常并允许我将模式的一部分保存到光盘,然后将其作为核心数据模型中的一组新对象读回。如果我使用archivedDataWithRootObject之一:或archiveRootObject:toFile:,根据documentation我可以看到存档的格式是NSPropertyListBinaryFormat_v1_0,而我想在NSPropertyListXMLFormat_v1_0中进行序列化,

ios - 随着时间的推移,有问题的 NSManagedObject 积累

我有一个应用程序不断从TCP/IP端点接收XML消息流。收到每条消息后,应用程序将其内容消化到一组核心数据实体中。这是通过三个上下文结构实现的:大师(私有(private)队列)Main(主队列->Master)流(专用队列->主队列)这种安排使流处理远离主线程。应用程序通常每秒或每两秒接收10-150条消息。Stream上下文的保存发生在每条消息被解构和持久化之后。A6级别设备上的CPU使用率通常低于15%。然而,我的问题是内存。如果我将NSFetchedResultsController连接到Main上下文,我会在消息到达时得到很好的消息流。但是,如果我进行概要分析,我会注意到我的

objective-c - 核心数据 NSManagedObject - 跟踪属性是否已更改

我有一个对象-Config。我想知道Config上的Account属性是否已更改。发生这种情况时,我想发送一个NSNotification,以便所有关心Account更改时间的代码都知道。我最初的想法是在我的NSManagedObject子类中,我将覆盖setAccount方法以将transient属性AccountDidChange设置为true。然后在didSave中,如果AccountDidChange为true,我将发送通知,然后将其设置回false。有没有更好的办法?但我的问题是,根据我的阅读,通过将AccountDidChange改回false,我会弄脏我的对象并需要再次保