Xcode: сохранить int CoreData

#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: не работает?