在NSInteger的情况下设置键的值

时间:2015-09-30 15:13:35

标签: ios objective-c core-data setvalue

我正在尝试使用setValue:forKey:在核心数据中设置一个值,但它会抛出错误:

  

(使用未声明的标识符:'newID'}

尝试保存NSInteger时。任何人都可以建议正确的语法吗?

 NSInteger newID = lastID+1;
 [record setValue:newID forKey:@"localid"];//error 

尝试setObject而不是setValue

时出现类似错误

2 个答案:

答案 0 :(得分:4)

NSInteger是原始类型,而不是对象。你应该把它装进NSNumber这样:

NSInteger newID = lastID+1;
 [record setValue:@(newID) forKey:@"localid"];

你可以像这样转换回来:

NSInteger recordId = [((NSNumber*)[record valueForKey:@"localid"]) integerValue]

答案 1 :(得分:1)

您只能设置NSObject。最简单的方法是

record [@"localid"] = @(newID);

你应该避免使用setValue:forKey:和valueForKey:并使用setObject:和objectForKey:或现代语法 - 除非你有充分的理由为什么你想要"值"方法。