我试图利用Realm Cocoa 3.0中引入的功能:存储基元列表。在该版本之前,唯一的方法是创建一个新的RLMObject
子类,其中包含@property NSString *stringValue
之类的属性,然后在模型上创建一个RLMArray
属性,用于使用字符串数组,整数或任何其他原语。有关详细信息,请参阅this answer。
根据Realm Cocoa 3.0 announcement我们现在支持基元数组,在使用Swift的示例中显示可以创建数据库模型
class Student : Object {
@objc dynamic var name: String = ""
let testScores = List<Int>()
}
那么,如何使用Objective-C创建这样的属性?我一直试图做类似以下代码的事情:
@interface Game : RLMObject
@property NSString *name;
@property RLMArray<NSString *> *tags; // First attempt
// @property NSArray<NSString> *tags; // Second attempt
@end
到目前为止,我的尝试都没有成功,因为我收到错误:Terminating app due to uncaught exception 'RLMException', reason: 'Property 'tags' requires a protocol defining the contained type - example: RLMArray<Person>.'
答案 0 :(得分:1)
RLMArray
可以存储原始值来代替Realm对象。为此,请使用以下协议之一约束RLMArray
:RLMBool
,RLMInt
,RLMFloat
,RLMDouble
,RLMString
,RLMData
或RLMDate
。
您的声明将是:
@property RLMArray<RLMString> *tags;
或者,如果您还想使用Objective-C泛型:
@property RLMArray<NSString *><RLMString> *tags;