标签: nsmanagedobjectcontext

通过NSManagedObjectContext对象迭代?

我想遍历NSManagedObjectContext中的所有对象,并手动更新它们.然后,应更新每个托管对象.最好的方法是什么?

cocoa core-data nsmanagedobjectcontext

4
推荐指数
1
解决办法
4338
查看次数

将NSManagedObject的实例添加到NSManagedObjectContext ok,更新同一实例失败

我在我的iPhone应用程序中使用核心数据.我创建了一个简单的类Friend,它派生自NSManagedObject并使用以下属性:

@property (nonatomic, retain) NSString *name;
Run Code Online (Sandbox Code Playgroud)

我能够在我的上下文中添加和删除此类的实例,并且我的更改也是持久的.
现在我想更新/修改一个Friend -instance并让它再次持久化.

但这似乎不起作用.

这是一段显示我的问题的代码:

//  NSManagedObjectContext *context  = < my managed context> 
//   NSFetchedResultsController *nsfrc= < my fetched result controller>

NSEntityDescription *entity = [nsfrc entity];
NSManagedObject *newManagedObject = [NSEntityDescription 
       insertNewObjectForEntityForName:[entity name]  inManagedObjectContext:context];

Friend *f = (Friend *) newManagedObject;
f.name = @"name1";
//1.  --- here context.hasChanges == 1 ---   ok

NSError *error = nil;
if (![context save:&error]) { ... }
//2.  --- here context.hasChanges == 0 --- …
Run Code Online (Sandbox Code Playgroud)

iphone core-data nsmanagedobject nsmanagedobjectcontext

4
推荐指数
1
解决办法
3668
查看次数

核心数据:严重的应用错误

我正在完成我的核心数据应用程序和我开始我的最终测试.

Everyfing工作正常,除了一件事,随机发生,我无法重现它.

这是日志(使用NSZombieEnabled):

2011-07-03 20:27:53.144 MYAPP[1882:707] -[__NSCFType controllerWillChangeContent:]: unrecognized selector sent to instance 0x4a4c490
2011-07-03 20:27:53.149 MYAPP[1882:707] Serious application error.  Exception was caught during Core Data change processing.  This is usually a bug within an observer of NSManagedObjectContextObjectsDidChangeNotification.  -[__NSCFType controllerWillChangeContent:]: unrecognized selector sent to instance 0x4a4c490 with userInfo (null)
2011-07-03 20:27:53.165 MYAPP[1882:707] CoreAnimation: ignoring exception: -[__NSCFType controllerWillChangeContent:]: unrecognized selector sent to instance 0x4a4c490
Run Code Online (Sandbox Code Playgroud)

它在这里崩溃:

NSManagedObjectContext *context = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext]; // IT'S OK
NSManagedObject *newManagedObject = …
Run Code Online (Sandbox Code Playgroud)

iphone core-data nsfetchedresultscontroller nsmanagedobjectcontext

4
推荐指数
1
解决办法
6091
查看次数

获取NSManagedObjectContext

好吧,我正在Apple的网站上阅读iOS核心数据教程,但我还是不太明白.

我如何实际获得,NSManagedObjectContext所以我可以用它来访问我的数据库?

cocoa-touch core-data nsmanagedobjectcontext ios

4
推荐指数
1
解决办法
1321
查看次数

核心数据:观察某种类型的新实体

我希望每当添加某种类型的实体(并且可能更改/删除)时都会收到通知.

我通过向managedObjectContext添加一个观察者来读取它是可能的.但是,我还没有找到实际的方法.

我在做:

[context addObserver:self forKeyPath:@"{myEntityName}" options:{I have tried several different values, but I am failing to understand which one to use} context:@"NewEntity"];
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助.

注意:我显然是coredata/cocoa/objective-c的新手,这可能是非常基本的,但一直在追逐答案.无法找到关于如何正确观察上下文对象的更改的示例和/或解释(我已经能够观察到特定实体的更改而没有问题).

顺便说一句:这是一个类似的问题,表明这是可能的,但我缺乏细节:核心数据:观察某些类型的实体的所有变化

core-data nsnotifications nsmanagedobject nsmanagedobjectcontext

4
推荐指数
1
解决办法
2899
查看次数

iPhone iOS如何合并Core Data NSManagedObjectContext?

我正在尝试在后台下载一些JSON对象,并且正在进行相当多的多线程.一旦操作完成,我注意到这个断言失败了:

NSAssert([user.managedObjectContext isEqual:[AppUser managedObjectContext]],@"Different contexts");
Run Code Online (Sandbox Code Playgroud)

如何将更改合并到[AppUser managedObjectContext]定义的主上下文中?

iphone core-data objective-c nsmanagedobjectcontext ios

4
推荐指数
1
解决办法
6773
查看次数

托管对象上下文保存和refreshObject之间有什么区别:mergeChanges:

你好,有什么区别

  [self.context refreshObject:site mergeChanges:YES];
Run Code Online (Sandbox Code Playgroud)

  [self.context save:nil];
Run Code Online (Sandbox Code Playgroud)

有时我会同时使用它们,有时我只使用它们save.它适用于两种情况.

iphone cocoa-touch core-data nsmanagedobjectcontext

4
推荐指数
1
解决办法
2681
查看次数

Magical Record在单独的线程中创建/获取实体

我有一堆NSOperations需要在队列中运行时创建和获取实体.

  1. 在NSOperations中创建实体时,我可以简单地使用默认上下文创建,或者因为我在不在主线程上的新线程中是不允许/建议的?如果我在这个线程上创建一个新实体,那么将它合并回默认上下文然后(而不是保存到商店)的最佳方法是什么?

  2. 在获取这些线程时,我需要获取然后更新该实体中的数据.我不知道如何做到这一点然后合并到默认上下文.

或者,当您保存时,您获取/创建的线程真的无关紧要?

我说上面的默认上下文,因为我有NSFetchedResultsControllers监视更新和插入的默认上下文.目前我的解决方案是在主线程上完成所有这些工作,但是应用程序现在开始爬行,现在正在通过它运行大量数据.

我还有一个类监控(通过KVO)操作队列计数.一旦它变为零,我就预先形成一个保存.我宁愿只在完成所有上述NSOperations后执行,就像我现在正在执行的那样.感谢您的帮助.

core-data nsoperation nsmanagedobjectcontext ios magicalrecord

4
推荐指数
1
解决办法
1488
查看次数

跟踪NSManagedObject的属性更改

我正在寻找一种方法来跟踪NSManagedObject的属性更改.

目前我使用NSNotifactionCenter来查看我的managedobjectcontext的更改:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleDataModelChange:) name:NSManagedObjectContextObjectsDidChangeNotification object:self.managedObjectContext];
Run Code Online (Sandbox Code Playgroud)

它会触发handleDataModelChange Methode,如下所示:

- (void)handleDataModelChange:(NSNotification *)note
{
    NSSet *updatedObjects = [[note userInfo] objectForKey:NSUpdatedObjectsKey];

    if (updatedObjects.count > 0) {
        for (NSManagedObject *obj in updatedObjects.allObjects) {
            NSLog(@"Object updated: %@ with values:",obj.entity.name);
            NSDictionary *theAttributes = [self getAllAttributesOf:obj];
            for (NSString *attributeName in theAttributes) {
                NSLog(@"Name: %@ : %@",attributeName,[obj valueForKey:attributeName]);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果对象发生更改,则会记录该对象的新属性.如何获得获取旧属性值的方法?

core-data nsmanagedobject nsmanagedobjectcontext ios

4
推荐指数
1
解决办法
2070
查看次数

创建临时CoreData实体(在非持久性MagicalRecord上下文中)?

我只想创建尚未保存的实体,只检查它们.

我可以为那些创建临时上下文吗?一旦我决定存储它们,有没有办法将它们移动到持久化上下文中

重点是:这些功能是否可通过MagicalRecord API获得?

core-data objective-c nsmanagedobjectcontext ios magicalrecord

4
推荐指数
1
解决办法
2393
查看次数