似乎找不到任何问答或任何对我有帮助的东西,但如果你找到一些,请随时链接! 我从核心数据实体中提取了数据,并使用 setPropertiesToFetch 提取了“行号”列表。 现在我想要的是将任何设置为 nil 的行号更改为 0。
问题 1)“发送到实例 0x59ef30 的无法识别的选择器”。我知道这个错误来自“if”行,通过注释掉其他错误,但我不确定是什么原因造成的!
问题 2)我希望它在增加计数后执行的操作再次运行,因此它会检查下一个对象,但我真的不确定最好的代码来执行此操作。任何有关方法/代码片段/教程的建议都会很受欢迎!
这是代码(上面的获取请求工作得很好:))
changeTo0 = [[context executeFetchRequest:fetchRequest error:&error] mutableCopy];
NSLog(@"What is even in this array anyway? %@", changeTo0);
[fetchRequest release];
NSLog(@"In the array there is %u records", [changeTo0 count]);
NSInteger count = 0;
Fsode *details = [changeTo0 objectAtIndex:count];
NSLog(@"In details we have %@", details);
if ([details lineNumber] == nil){
[details setValue:0 forKey:@"lineNumber"];
++count
NSLog(@"HERE");
}
最佳答案
关于第一个问题,你应该说说错误(见 Phillip Mills 评论)和模型。 Fsode
实体是否有一个名为 lineNumber
的属性?是什么类型的?
关于第二个问题,像下面这样的请求只执行一次:
NSArray* results = [context executeFetchRequest:fetchRequest error:&error];
NSLog(@"What is even in this array anyway? %@", results);
int count = 1;
for(NSManagedObject* obj in results) {
// I suppose lineNumber is of type NSNumber
int numberValue = [[obj valueForKey:@"lineNumber"] intValue];
if(numberValue == 0) {
[obj setValue:[NSNumber numberWithInt:count] forKey:@"lineNumber"];
count++;
}
}
[fetchRequest release];
// do a save here...
附言阅读您的代码,我不确定第二个问题。请随意解释您想要实现的目标。
我使用的代码为行号为零的每个对象递增 lineNumber
。
所以第一个对象有 1,第二个有 2,依此类推。如果你想为这些对象放置一个常量行号替换
[obj setValue:[NSNumber numberWithInt:count] forKey:@"lineNumber"];
与
[obj setValue:[NSNumber numberWithInt:1] forKey:@"lineNumber"];
并删除 count
(这与您的代码相同)。
关于ios - 使用检索到的核心数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12598055/