Извлечение целого числа из CoreData? - PullRequest
2 голосов
/ 25 марта 2012

Я получил результат из основных данных в моем приложении, и мне нужно получить целочисленное значение его атрибута'acity ', который я ему дал.

Атрибут'acity '- это 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'

Все, что мне нужно сделать, это получить это целочисленное значение из атрибута емкости.

Ответы [ 2 ]

5 голосов
/ 25 марта 2012

selectedTableFetched - это массив:

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

Таким образом, вы хотите поработать с элементом (предположительно, единственным элементом, основанным на предикате fetchRequest), прежде чем выполнить valueForKey:

NSManagedObject *managedObject = [selectedTableFetched lastObject];
NSNumber *n = [managedObject valueForKey:@"capacity"];
NSInteger *yourInteger = [n integerValue];
0 голосов
/ 25 марта 2012

Я думаю, что вы пытаетесь присвоить целое число типу Number Попробуйте провести линию

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

Для

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