[英]Getting Number of out Core-Data SQLite Database
使用核心数据保存各种信息,其中之一是“数字”属性(Int(16))。 我尝试使用以下方法将其从数据库中取出: number = (int)[info valueForKey:@"number"]
;
不幸的是,这总是会产生一些可怕的结果,例如2895891275应该返回3。
希望得到任何帮助,谢谢!
valueForKey
返回一个对象,而不是一个int。 您必须显式转换它的事实应该是一个警告信号。 尝试:
number = [[info valueForKey:@"number"] intValue];
要扩展@duskwuffs答案:
核心数据中的所有值都是对象。 当您将属性类型设置为Int16时,Core Data将创建一个NSNumber对象。
这段代码:
number = (int)[info valueForKey:@"number"]
...给您一个巨大的数字,因为[info valueForKey:@"number"]
返回一个NSNumber的实例,该对象已转换为int。 当您将一个对象强制转换为一个int时,实际上是将其在内存中的地址强制转换为一个int,因此最终得到一个很大的无意义的数字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.