Чтобы расширить @duskwuffs ответ:
Все значения в Базовых данных являются объектами. Когда вы устанавливаете тип атрибута, скажем, Int16, Core Data создаст объект NSNumber.
Этот код:
number = (int)[info valueForKey:@"number"]
... дает вам огромное число, потому что [info valueForKey:@"number"]
возвращает экземпляр NSNumber, объект, который вы приводите к int. Когда вы приводите объект к типу int, вы фактически приводите его адрес в памяти к типу int, и в результате получается большое бессмысленное число.