class Post: RLMObject {
var images: RLMArray!
override init(JSON:json) {
if let imagesArray = dictionary["images"].arrayObject {
let imagesItems = RLMArray(objectClassName: StringObject.className())
for dic in imagesArray {
let image = StringObject(stringValue: dic as! String)
imagesItems.addObject(image)
}
images = imagesItems
}
}
}
上面的代码我尝试初始化PostModel
包含images属性,但它总是在我的项目中崩溃:
'(null)'不支持作为RLMArray对象类型。 RLMArrays只能包含RLMObject子类的实例
我在Realm Swift的文档中看到使用List<Foo>
来声明数组属性,但在我的情况下我不知道如何这样做。
答案 0 :(得分:3)
当使用来自Swift的Realm的Objective-C API时,应使用默认值声明数组属性,该默认值是具有适当对象类名称的RLMArray
实例。例如:
class Post: RLMObject {
dynamic var images = RLMArray(objectClassName: StringObject.className())
// …
}
还要注意dynamic
修饰符的存在。这是确保将属性的访问动态分派给RLMObject
创建的属性的getter和setter所必需的。