使用检索到的核心数据

时间:2012-09-26 08:58:07

标签: ios objective-c xcode core-data

似乎无法找到任何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");
}

1 个答案:

答案 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(它与您的代码相同)。