Получение номера из базы данных SQLite Core-Data - PullRequest
0 голосов
/ 23 июня 2011

Использование Core-Data для хранения различной информации, одним из которых является атрибут «число» (Int (16)).Я пытаюсь извлечь его из базы данных, используя: number = (int)[info valueForKey:@"number"];

К сожалению, это всегда дает какой-то ужасный результат, например, 2895891275, когда он должен возвращать 3.

Буду признателен за любую помощьспасибо!

Ответы [ 2 ]

7 голосов
/ 23 июня 2011

valueForKey возвращает объект, а не int. Тот факт, что вы должны разыграть его явно, должен быть предупредительным знаком. Попробуйте:

number = [[info valueForKey:@"number"] intValue];
1 голос
/ 23 июня 2011

Чтобы расширить @duskwuffs ответ:

Все значения в Базовых данных являются объектами. Когда вы устанавливаете тип атрибута, скажем, Int16, Core Data создаст объект NSNumber.

Этот код:

number = (int)[info valueForKey:@"number"]

... дает вам огромное число, потому что [info valueForKey:@"number"] возвращает экземпляр NSNumber, объект, который вы приводите к int. Когда вы приводите объект к типу int, вы фактически приводите его адрес в памяти к типу int, и в результате получается большое бессмысленное число.

...