使用Swift中的Realm Objective-C时声明RLMArray属性

时间:2015-12-22 09:08:22

标签: swift realm

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>来声明数组属性,但在我的情况下我不知道如何这样做。

1 个答案:

答案 0 :(得分:3)

当使用来自Swift的Realm的Objective-C API时,应使用默认值声明数组属性,该默认值是具有适当对象类名称的RLMArray实例。例如:

class Post: RLMObject {
    dynamic var images = RLMArray(objectClassName: StringObject.className())

    // …
}

还要注意dynamic修饰符的存在。这是确保将属性的访问动态分派给RLMObject创建的属性的getter和setter所必需的。