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

10-07 20:28