gpt4 book ai didi

ios - Realm 列表未存储在发布配置中的 Swift 4.2 中

转载 作者:可可西里 更新时间:2023-11-01 01:56:42 27 4
gpt4 key购买 nike

我刚刚构建了我的应用程序的最新版本,遇到了一个问题,即我所有 Realm 对象上的 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!

然后将其传递回我的 View Controller ,并像这样存储:

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

最佳答案

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

关于ios - Realm 列表未存储在发布配置中的 Swift 4.2 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52635664/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com