将 NSArray 对象写入领域数据库 - Objective C

Posted

技术标签:

【中文标题】将 NSArray 对象写入领域数据库 - Objective C【英文标题】:Write NSArray object into Realm Data base - Objective C 【发布时间】:2016-12-08 12:05:04 【问题描述】:

我正在使用 Realm 创建一个项目。在这个项目中,我正在调用后端服务器并获取 JSON 数据。我想将数据加载到 Realm DB。我已经成功实现了领域并能够将数据写入其中。

但我不明白如何将 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
    ]

请帮忙。提前致谢。

【问题讨论】:

【参考方案1】:

您可以像以前一样将值传递给数组;您只需要遍历每个数组项并手动将其添加到 Realm。

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

话虽如此,解析 JSON 并将数据插入 Realm 有更简单的方法。例如,Patreon 已经发布了an open source library for this。

【讨论】:

嗨,谢谢。有效。我不得不对代码进行一些修改,现在它仍然可以正常工作。

以上是关于将 NSArray 对象写入领域数据库 - Objective C的主要内容,如果未能解决你的问题,请参考以下文章

将 NSArray 写入 plist 文件

转换对象以写入firebase? (只能存储 NSNumber、NSString、NSDictionary 和 NSArray 类型的对象)

NSArray int[]

按二维排序 NSArray - Objective-C

MATLAB将数据写入obj文件

在文本文件中写入和读取 php 对象?