2017-02-22 17 views
1

Я хочу сохранить & восстановить объект NSArray в одном столбце базы данных sqlite. Кто-нибудь знает, как я могу это достичь?Как сохранить и загрузить объект NSArray в базе данных sqlite в объекте c

+0

вы можете показать некоторые примеры –

+0

класс: [ { "gradeId": 123, "gradeName": "ABC" }, { " gradeId ": 222, " gradeName ":" xyz " } ] –

ответ

6

Самый простой способ добиться этого - преобразовать массив в строку JSON и сохранить строку в базе данных, а при извлечении данных снова преобразуйте строку JSON в массив.

массива в формате JSON

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:arrayObject options:NSJSONWritingPrettyPrinted error:nil] 
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]); 

JSON в массив

NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; 
NSArray *arrayObject = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil]; 
+0

Спасибо, что ваш ответ сработал для меня. –

+0

https://github.com/jmbarnardgh/labqlite и https://github.com/jmbarnardgh/labqlite_model_generator может помочь вам с частью SQLite –

+0

Я также пользуюсь библиотекой https://github.com/ccgus/fmdb и https://github.com/nerdyc/FMDBHelpers для взаимодействия с файлом базы данных SQLite, и у меня есть класс, который содержит функции для работы CRUD для требуемых моделей. Это также полезно. –

0

Это много способов сделать это. Одним из простых является использование componentsJoinedByString метод.

NSArray* someArray = @[.....]; 
NSString* result = [someArray componentsJoinedByString:@"<some separator>"]; 

Также вы можете NSKeyedArchiver

NSArray* someArray = @[.....]; 
NSData* dataToSave = [NSKeyedArchiver archivedDataWithRootObject:someArray]; 

Но вы обеспечите объект в массиве, которые подтверждают в протокола NSCoding.

Также вы можете использовать JSON сериализации:

NSArray* someArray = @[.....]; 
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:someArray options:NSJSONWritingPrettyPrinted error:nil]