Получение номера из базы данных SQLite Core-Data
Использование Core-Data для хранения различной информации, одним из которых является атрибут "число" (Int(16)). Я пытаюсь извлечь его из базы данных, используя:number = (int)[info valueForKey:@"number"]
;
К сожалению, это всегда дает какой-то ужасный результат, например, 2895891275, когда он должен возвращать 3.
Буду признателен за любую помощь, спасибо!
2 ответа
valueForKey
возвращает объект, а не int. Тот факт, что вы должны разыграть его явно, должен быть предупредительным знаком. Пытаться:
number = [[info valueForKey:@"number"] intValue];
Чтобы расширить ответ @duskwuffs:
Все значения в Базовых данных являются объектами. Когда вы устанавливаете тип атрибута, скажем, Int16, Core Data создаст объект NSNumber.
Этот код:
number = (int)[info valueForKey:@"number"]
... дает вам огромное количество, потому что [info valueForKey:@"number"]
возвращает экземпляр NSNumber, объект, который вы приводите к типу int. Когда вы приводите объект к типу int, вы фактически приводите его адрес в памяти к типу int, и в результате получается большое бессмысленное число.