从 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 获取整数?的主要内容,如果未能解决你的问题,请参考以下文章

从 TableView 中获取数据(CoreData)

使用两个 NSFetchedResultsController 从 CoreData 获取大量数据

从 CloudKit 获取并保存到 CoreData

快速从 coredata 获取特定属性

从 CoreData 获取多个实体

从 CoreData 中获取比较和删除字符串