我正在尝试使用setValue:forKey:
在核心数据中设置一个值,但它会抛出错误:
(使用未声明的标识符:'newID'}
尝试保存NSInteger时。任何人都可以建议正确的语法吗?
NSInteger newID = lastID+1;
[record setValue:newID forKey:@"localid"];//error
尝试setObject
而不是setValue
答案 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:或现代语法 - 除非你有充分的理由为什么你想要"值"方法。