从CoreData获取整数?

时间:2012-03-25 18:04:13

标签: iphone objective-c ipad core-data nsfetchrequest

我从我的应用中的核心数据中获取了一个结果,并且需要获取我给它的'capacity'属性的整数值。

'capacity'属性是我核心数据模型中的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];

现在我的问题是如何从我的结果中获取'capacity'值?我知道有结果,因为我已经检查了数组的计数,我试过这个:

NSNumber *n = [selectedTableFetched valueForKey:@"capacity"];

它给了我一些东西,当访问NSNumber时,我得到一个无意义的长数,所以如果我尝试访问整数值,如下:

[n integerValue]

它崩溃了应用程序,我收到了这个错误:

'NSInvalidArgumentException', reason: '-[__NSArrayI integerValue]: unrecognized selector sent to instance 0x138870'

希望你能帮助我,我需要做的就是从容量属性中获取整数值,谢谢。

2 个答案:

答案 0 :(得分:5)

selectedTableFetched是一个数组:

NSArray *selectedTableFetched = [appDelegate.managedObjectContext executeFetchRequest:fetchRequest error:&error];

因此,在执行fetchRequest之前,您希望使用元素(可能是唯一基于valueForKey谓词的元素):

NSManagedObject *managedObject = [selectedTableFetched lastObject];
NSNumber *n = [managedObject valueForKey:@"capacity"];
NSInteger *yourInteger = [n integerValue];

答案 1 :(得分:0)

我认为您尝试将一个Integer分配给Number类型 尝试更改行

NSNumber *n = [selectedTableFetched valueForKey:@"capacity"];

NSInteger *n = [selectedTableFetched valueForKey:@"capacity"];