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

问题描述 投票:1回答:2

如何在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
ios objective-c realm
2个回答
3
投票

您需要为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];
}];

0
投票

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

@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

.

© www.soinside.com 2019 - 2024. All rights reserved.