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



使用核心数据来保存各种信息,其中之一是"数字"属性(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,因此最终会得到一个大的无意义数字。

相关内容

  • 没有找到相关文章

最新更新