【问题标题】:Realm List not stored in Swift 4.2 in release config领域列表未存储在发布配置中的 Swift 4.2 中
【发布时间】:2018-10-03 21:03:09
【问题描述】:

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

这里是一些示例代码:

对象:

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 有关。另外,我的代码在调试中运行良好,而不是在发布中。有没有其他人遇到过这个问题?

【问题讨论】:

    标签: ios swift realm realm-list


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多