通常のSwiftクラスでObjectMapperを使用すると、JSONオブジェクトを作成できますが、Realmクラスモデルで使用するとプログラムがクラッシュします。私はそれを回避しようとしました(objectが存在するかどうかをチェックし、次にprimaryKeyメソッドをオーバーライドして使用しますが、助けにはなりませんでした)。私はStackOverFlowからクラスListTransformを使用し、それは正常に動作するようです。 Xcodeは、異常終了に関する特定の情報を提供しないため、より多くのデバッグを行うことができます。他のstackoverflowのポストは役に立たない。SwiftのRealmでObjectMapperを使用中にプログラムがクラッシュする
class UserResponse: Object, Mappable {
// MARK: Properties
//
var item = List<Item>()
dynamic var itemPurchaseDate = NSDate()
required convenience init?(_ map: Map) {
self.init()
}
func mapping(map: Map) {
item <- (map["item"], ListTransform<Item>())
itemPurchaseDate <- (map["itemPurchaseDate"], ISO8601DateTransform())
}
}
class ListTransform<T:RealmSwift.Object where T:Mappable> : TransformType {
typealias Object = List<T>
typealias JSON = [AnyObject]
let mapper = Mapper<T>()
func transformFromJSON(value: AnyObject?) -> Object? {
let results = List<T>()
if let value = value as? [AnyObject] {
for json in value {
if let obj = mapper.map(json) {
results.append(obj)
}
}
}
return results
}
func transformToJSON(value: Object?) -> JSON? {
var results = [AnyObject]()
if let value = value {
for obj in value {
let json = mapper.toJSON(obj)
results.append(json)
}
}
return results
}
}
class Item: Object, Mappable {
// MARK: Properties
//
dynamic var itemName = ""
required convenience init?(_ map: Map) {
self.init()
}
// Mapping between ObjectMapper (JSON) and the model properties
//
func mapping(map: Map) {
itemName <- map["itemName"]
}
}
class RealmManager {
// returns a dictionary which represents give mappable object
//
func jsonFormat<N: Mappable>(object: N) -> [String: AnyObject] {
return Mapper().toJSON(object)
}
func uploadDataToBackend(someObject: UserResponse) {
let postData = jsonFormat(someObject)
print(postData)
}
}
-----------------------------------------
Program crash on following lines:
1. In Item class, program crash on line itemName <- map["itemName"]
2. If I comment above line , then I get crash on itemPurchaseDate <- (map["itemPurchaseDate "], ISO8601DateTransform())
は、アイテムが何かを持っているdoes'tとき、最初の行は実行が、それはデータを持っているとき、それだけでクラッシュし、ことに注意してください。 詳細情報が必要な場合は、
Worked。どうもありがとうございます。 – Naren