似乎找不到任何问答或任何对我有帮助的内容,但是如果您发现有任何联系,请联系我们!
我从核心数据实体中提取了数据,并使用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
(与您的代码相同)。