在 NSInteger 的情况下为键设置值

Set value for key in case of NSInteger

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

(Use of undeclared identifier: 'newID'}

尝试保存 NSI​​nteger 时。谁能建议正确的语法?

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

当我尝试 setObject 而不是 setValue

时遇到了类似的错误

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

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

并且您应该避免使用 setValue:forKey: 和 valueForKey: 并使用 setObject: 和 objectForKey: 或现代语法 - 除非您有充分的理由需要 "value" 方法。

NSInteger 是原始类型,不是对象。你应该像这样把它装箱成​​ NSNumber

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

你可以像这样转换回来:

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