从 CoreData 获取整数?
Posted
技术标签:
【中文标题】从 CoreData 获取整数?【英文标题】:Fetching an Integer From CoreData? 【发布时间】:2012-03-25 18:04:13 【问题描述】:我从我的应用程序的核心数据中获取了一个结果,需要获取我给它的“容量”属性的整数值。
“容量”属性在我的核心数据模型中是 NSInteger 16。
我的结果是这样的:
entity = [NSEntityDescription entityForName:@"TableInfo" inManagedObjectContext:appDelegate.managedObjectContext];
[fetchRequest setEntity:entity];
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"name == %@", [NSString stringWithFormat:@"%@", [tablesArray objectAtIndex:row]]]];
NSArray *selectedTableFetched = [appDelegate.managedObjectContext executeFetchRequest:fetchRequest error:&error];
现在我的问题是如何从结果中获取“容量”值?我知道有一个结果,因为我检查了数组的计数并尝试了这个:
NSNumber *n = [selectedTableFetched valueForKey:@"capacity"];
它给了我一些东西,当访问 NSNumber 时,我得到一个无意义的长数字,所以如果我尝试像这样访问整数值:
[n integerValue]
它使应用程序崩溃,我收到此错误:
'NSInvalidArgumentException', reason: '-[__NSArrayI integerValue]: unrecognized selector sent to instance 0x138870'
我需要做的就是从容量属性中获取整数值。
【问题讨论】:
我认为[selectedTableFetched valueForKey:@"capacity"]
不会返回NSNumber
,而是返回NSArray
【参考方案1】:
selectedTableFetched
是一个数组:
NSArray *selectedTableFetched = [appDelegate.managedObjectContext executeFetchRequest:fetchRequest error:&error];
所以你想在valueForKey
之前使用一个元素(可能是唯一的元素,基于你的fetchRequest
的谓词):
NSManagedObject *managedObject = [selectedTableFetched lastObject];
NSNumber *n = [managedObject valueForKey:@"capacity"];
NSInteger *yourInteger = [n integerValue];
【讨论】:
创建我的托管对象的实例成功了,谢谢!【参考方案2】:我认为您尝试将 Integer 分配给 Number 类型 试试挂线
NSNumber *n = [selectedTableFetched valueForKey:@"capacity"];
到
NSInteger *n = [selectedTableFetched valueForKey:@"capacity"];
【讨论】:
错误:Implicit conversion of an Objective-C pointer to 'NSInteger *' (aka 'int *') is disallowed with ARC
以上是关于从 CoreData 获取整数?的主要内容,如果未能解决你的问题,请参考以下文章