首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遍历NSManagedObjectContext对象?

遍历NSManagedObjectContext对象?
EN

Stack Overflow用户
提问于 2010-04-29 00:18:02
回答 3查看 4.5K关注 0票数 4

我希望遍历NSManagedObjectContext中的所有对象,并手动更新它们。然后,应该更新每个托管对象。做这件事最好的方法是什么?

EN

回答 3

Stack Overflow用户

发布于 2010-04-29 00:32:51

从理论上讲,您可以遍历托管对象模型中的所有实体描述,为它们构建一个无谓词获取请求,然后循环所有返回的对象并执行一些更新。示例:

代码语言:javascript
复制
// Given some NSManagedObjectContext *context
NSManagedObjectModel *model = [[context persistentStoreCoordinator]
                               managedObjectModel];
for(NSEntityDescription *entity in [model entities]) {
    NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
    [request setEntity:entity];
    NSError *error;
    NSArray *results = [context executeFetchRequest:request error:&error];
    // Error-checking here...
    for(NSManagedObject *object in results) {
        // Do your updates here
    }
}

注您可以根据需要转换返回的NSManagedObjects,方法是测试类是否相等(使用isKindOfClass:或相关方法),或者确定当前实体是什么类(将entity上的managedObjectClassName属性与NSClassWithName()方法结合使用)。

票数 5
EN

Stack Overflow用户

发布于 2010-04-29 02:03:51

这似乎是一种非常严厉的方法来解决这个问题。如果数据加载了坏数据,那么我强烈建议在导入数据时修复它。强烈建议您在导入数据时修复它。Tim的答案将适用于您正在做的事情,但我强烈怀疑您在这一点上是错误的。遍历整个数据库,寻找潜在的坏数据是非常低效的。

票数 4
EN

Stack Overflow用户

发布于 2011-07-26 00:30:02

如果被管理的对象是用“错误的数据”创建的,我会检查以确保你在你的模型中为所有实体的所有属性设置了默认值。这样,您就可以确保无论何时将对象插入到上下文中,它都将包含这些值。从那里,您可以将属性设置为所需的任何内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2731276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档