领域列表未存储在版本配置

时间:2018-10-03 21:03:10

标签: ios swift realm realm-list

我刚刚构建了应用程序的最新版本,并且遇到了一个问题,即我的所有领域对象上的List都没有存储。

以下是一些示例代码:

对象:

public class ReportItem: Object {

    @objc dynamic var id: String!
    @objc dynamic var someDate: Date?

    // This contains another List as one of its properties
    let list = List<OtherRealmObject>()

    override public class func primaryKey() -> String {
        return "id"
    }

    convenience public init(id: String, date: Date) {
        self.init()

        self.id = id
        self.date = date
    }
}

此对象由json映射器根据网络请求的响应创建:

// Convert json to dictionary then
guard let id = json["id"] as? String else {
    return nil
}

let date = json["date"] as? Date

let objects = json["someObjects"] as? [String: Any]

let someRealmObjects = [OtherRealmObject]()
objects.forEach { object in
     // Create some realm object
     someRealmObjects.append(newSomeRealmObject)
}

let reportItem: ReportItem?
if let date = date?.convertToDateFromString() {
    reportItem = ReportItem(id: id, date: date)
} else {
    return nil
}

reportItem!.list.append(objectsIn: someRealmObjects)

return reportItem!

然后将其传递回我的视图控制器,并按如下方式存储:

// Report item is the item we just created in the json mapper
someNetworkOperation.success = { reportItem in
    DispatchQueue.main.sync {
        let realm = try! Realm()
        try! realm.write {
            realm.add(reportItem, update: true)
        }
    }
}

然后在其他地方检索到该项目,但是list为空,并且当我尝试过滤时收到错误This method may only be called on RLMArray instances retrieved from an RLMRealm。由于某种原因,当我将报表对象添加到数据库时,我的列表没有被保留。

这曾经起作用,但是在上个星期左右它已经停止起作用。我想知道是否与更新到Swift 4.2 / Xcode 10有关。而且,我的代码在调试中工作正常,而在发行版中工作正常。还有其他人遇到这个问题吗?

1 个答案:

答案 0 :(得分:1)

这是因为在Swift 4.2转换期间,Reflection Metadata Level设置为None而不是All。 ‍♂️