Список областей не хранится в Swift 4.2 в конфигурации выпуска

Я только что создал последнюю версию своего приложения и столкнулся с проблемой, когда не сохраняются 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 mapper из ответа на сетевой запрос:

// 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. Кроме того, мой код отлично работает в отладке, а не в выпуске. Кто-нибудь еще сталкивался с этой проблемой?


person Chris Byatt    schedule 03.10.2018    source источник


Ответы (1)


Это произошло потому, что во время преобразования Swift 4.2 Reflection Metadata Level каким-то образом было установлено значение None вместо All. ????‍♂️

person Chris Byatt    schedule 08.10.2018