#ios #core-data
#iOS #core-данные
Вопрос:
Как я могу сохранить int в CoreData? И какой тип атрибута я должен выбрать?
int number = 0002202020202;
[newContact setValue:number forKey:@"phonenumber"];
Ответ №1:
Вы можете сохранять только объекты в Core Data. Имея это в виду, вы должны создать объект NSNumber NSNumber* number = @(0002202020202)
. Для типа атрибута вы можете выбрать одно из следующих целых чисел 16, целое число 32, целое число 64, в зависимости от требуемого диапазона. Хотя, если вы действительно хотите сохранить «номер телефона», я предлагаю использовать String в качестве типа.
Комментарии:
1. Вау, большое вам спасибо. Это работает так, как я этого хотел 🙂
2. Это немного вводит в заблуждение.
setValue:forKey:
работает только с объектами, и по умолчанию методы доступа, созданные Core Data, используют объекты. Но вы можете выбрать «Использовать скалярные средства доступа для примитивных типов данных» при создании подкласса NSManagedObject . ТогдаnewContact.phoneNumber = 123
будет работать.3. что ж, спасибо @MartinR. Я попробую, но другое решение также работает.
Ответ №2:
NSNumber* number = @(0002202020202);
[newContact setValue:number forKey:@"phonenumber"];
Ответ №3:
Как настроена ваша базовая модель данных? Возможно, я бы подумал о сохранении этого в виде строки вместо int. Если вы хотите сохранить его как int, попробуйте выбрать Integer 32 . Вызов setValue:forKey:
не работает?