2016-12-08 1 views
0

Я создаю проект с использованием Realm. В этом проекте я звоню на задний сервер и получаю данные JSON. И я хочу загрузить данные в базу данных Realm. Я успешно реализовал Realm и смог записать в него данные.Запись объекта NSArray в Realm База данных - Objective C

Но я не понимаю, как написать NSArray объект для Realm DB. Я следил за некоторыми сообщениями SO и написал код ниже.

RLM_ARRAY_TYPE(OBMDefinitionsModel) 

@interface DefinitionsModel : RLMObject 

@property (nonatomic) NSInteger defnitionID; 
@property (nonatomic, strong) NSString *enTitle; 
@property (nonatomic, strong) NSString *deTitle; 

@end 

#import <Realm/Realm.h> 
#import "DefinitionsModel.h" 

@interface DefinitionsRelationsModel : RLMObject 

@property RLMArray<DefinitionsModel> *relationsArray; 

@end 

И ниже приведен код для установки значений для каждого объекта в JSONDataHandler классе.

DefinitionsModel *defObj = [[DefinitionsModel alloc]init]; 
defObj.definitionID = [[defDic valueForKey:@"id"] integerValue]; 
defObj.enTitle = [[defDic objectForKey:@"title"] valueForKey:@"en"]; 
defObj.deTitle = [[defDic objectForKey:@"title"] valueForKey:@"de"]; 

Но как установить значение для relationsArray?

Ниже приведены образцы данных JSON;

{ 
    "id": 41, 
    "title": { 
     "de": "Technologien", 
     "en": "Technologies" 
    }, 
    "relations": [ 
     90, 
     91, 
     92, 
     96 
    ] 
} 

Пожалуйста, помогите. Заранее спасибо.

ответ

0

Вы передадите значение в массив так же, как вы уже делаете; вам просто нужно пройти через каждый элемент массива и добавить его в Realm вручную.

for (NSNumber *relationID in defDic[@"relations"]) { 
    DefinitionsModel *newModel = [[DefinitionsModel alloc] init]; 
    newModel.definitionID = relationID.integerValue; 
    [myDefinitionsRelationModel.relationsArray addObject: newModel]; 
} 

Это, как говорится, есть более простые способы разбора JSON и вставки данных в Царство. Патреон выпустил, например, an open source library for this.

+0

Привет, спасибо. Это сработало. Я должен был внести некоторые изменения в код, но теперь он работает нормально. – Mithun

Смежные вопросы