似乎无法找到任何Q& A或任何可以帮助我的东西,但如果你发现有些人随时可以链接! 我从Core Data实体中提取数据并使用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");
}
答案 0 :(得分:4)
关于第一个问题,你应该说一下错误(参见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...
P.S。阅读你的代码,我不确定第二个问题。随意解释你想要达到的目标。
我使用的代码为每个行号为零的对象增加lineNumber
。
所以第一个对象有1个,第二个对象有2个,依此类推。如果要为这些对象添加常量行号,请替换
[obj setValue:[NSNumber numberWithInt:count] forKey:@"lineNumber"];
与
[obj setValue:[NSNumber numberWithInt:1] forKey:@"lineNumber"];
并删除count
(它与您的代码相同)。