获取核心数据SQLite数据库的数量

时间:2011-06-22 23:23:09

标签: iphone objective-c xcode core-data mom

使用Core-Data来保存各种信息,其中一个是'number'属性(Int(16))。我尝试使用以下方法将其从数据库中取出: number = (int)[info valueForKey:@"number"];

不幸的是,这总会产生一些糟糕的结果,比如2895891275应该返回3。

感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:7)

valueForKey返回一个对象,而不是int。您必须明确地投射它的事实应该是一个警告标志。尝试:

number = [[info valueForKey:@"number"] intValue];

答案 1 :(得分:1)

扩展@duskwuffs回答:

核心数据中的所有值都是对象。当您将属性类型设置为Int16时,Core Data将创建一个NSNumber对象。

此代码:

number = (int)[info valueForKey:@"number"]

...给你一个巨大的数字,因为[info valueForKey:@"number"]返回一个NSNumber实例,一个对象,你转换为int。当你将一个对象转换为一个int时,你实际上将它在内存中的地址转换为一个int,因此最终得到一个大的无意义的数字。