Получение номера из базы данных 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, и в результате получается большое бессмысленное число.

Другие вопросы по тегам