如何使用Objective C在Realm DB中存储数组值(RLMArray)?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Objective C在Realm DB中存储数组值(RLMArray)?相关的知识,希望对你有一定的参考价值。

如何在Realm DB中存储数组值(RLMArray)?

我的.h文件在下面,

 @interface Hotlines : RLMObject
 @property (strong, nonatomic) NSString  *id;       
 @property (strong, nonatomic) NSString *department_name;
 @property (strong, nonatomic) NSString *flag;
 @property (strong,nonatomic) RLMArray<Numbers> *numbers;   
 @end
答案

您需要为Numbers数组创建领域模型:

#import <Realm/Realm.h>

// Define your models for Numbers array
@interface Numbers : RLMObject
@property NSInteger *num;
@property (strong, nonatomic) NSString *name;
@end
RLM_ARRAY_TYPE(Numbers) // define RLMArray< Numbers >


// Define your models for Numbers array
@interface Hotlines : RLMObject
@property (strong, nonatomic) NSString  *id;       
@property (strong, nonatomic) NSString *department_name;
@property (strong, nonatomic) NSString *flag;
@property (strong,nonatomic) RLMArray<Numbers> *numbers;   
@end

// Implementations
@implementation Numbers
@end // none needed

@implementation Hotlines
@end // none needed

有关更多信息,请参阅Realm Objective c

更新:

 RLMRealm *realm = [RLMRealm defaultRealm];
[realm transactionWithBlock:^{
       Hotlines *obj = [[Hotlines alloc] init]; 
       obj.department_name = @"anyString";
        Numbers *number = [[Numbers alloc] init]
        number.num = 1;
      [obj.numbers addObject:number] 
      [realm addObject:obj];
}];

对于多个数据:

[realm transactionWithBlock:^{
    Hotlines *obj = [[Hotlines alloc] init];
    obj.department_name = @"anyString";

    for (int i=0; 1< 10; i++) {
        Numbers *number = [[Numbers alloc] init]
        number.num = i;
        number.name = @"XYZ"
        [obj.numbers addObject:number]
    }
    [realm addObject:obj];
}];
另一答案

如果你真的只想要数字,可以用原语完成:

@interface Hotlines : RLMObject
@property NSString *id;       
@property NSString *department_name;
@property NSString *flag;
@property RLMArray<NSNumber*><RLMFloat> *numbers;
@end

来自realm docs

RLMArrays可以存储原始值来代替Realm对象。为此,使用以下协议之一约束RLMArray:RLMBool,RLMInt,RLMFloat,RLMDouble,RLMString,RLMData或RLMDate

.

以上是关于如何使用Objective C在Realm DB中存储数组值(RLMArray)?的主要内容,如果未能解决你的问题,请参考以下文章

在 IOS(Objective-C)中有效地解析 JSON 到 Realm DB

在同一个项目中同时使用 Realm Swift 和 Realm Objective-C

如何在 iOS 项目中正确配置 Realm DB 文件 (<db_name>.realm) 的路径?

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

Android Realm数据库使用

使用插入不工作在Realm DB中添加列表?