2016-02-17 53 views
5

我使用ObjectMapper將JSON對象解析爲Realm。領域Swift返回所有零值的對象

我的班級旅行看起來是這樣的:

class Trip: Object, Mappable { 
    dynamic var Id : String? = nil 
    dynamic var CreatedOn : String? = nil 
    dynamic var LastModified : String? = nil 

    required convenience init?(_ map: Map) { 
     self.init() 
    } 

    func mapping(map: Map) { 
     Id <- map["Id"]; 
     CreatedOn <- map["CreatedOn"]; 
     LastModified <- map["LastModified"]; 
    } 
} 

我打電話使用Alamofire Web服務請求:

Alamofire.request(.GET, path, headers: ["Token" : auth_token]).responseJSON { response in 

    let dict : NSDictionary? = response.result.value as? NSDictionary 

    let test = Mapper<Trip>().map(dict!) 
    let realm = try! Realm() 
    realm.beginWrite() 
    realm.add(test!) 
    try! realm.commitWrite() 

    let alltrips : Results<Trip> = realm.objects(Trip) 
    let firstTrip = alltrips.first 
} 

在上面的代碼,當我打印測試中,我得到:

(AwesomeApp.Trip?) test = 0x0000000154e8f0d0 { 
    RealmSwift.Object = { 
    Realm.RLMObjectBase = { 
     ObjectiveC.NSObject = {} 
    } 
    } 
    Id = "47d86d34-b6f2-4a9f-9e31-30c81a915492" 
    CreatedOn = "2016-01-20T23:39:41.995Z" 
    LastModified = "2016-01-20T23:44:39.363Z" 
} 

當我打印,firstTrip,我得到

(AwesomeApp.Trip?) firstTrip = 0x0000000154f1f370 { 
    RealmSwift.Object = { 
    Realm.RLMObjectBase = { 
     ObjectiveC.NSObject = {} 
    } 
    } 
    Id = nil 
    CreatedOn = nil 
    LastModified = nil 
} 

我使用了Realm瀏覽器,它看起來像數值已被正確寫入數據庫。但是,讀取值將返回具有全部零值的跳閘對象。爲什麼是這樣 ?

編輯:我用印print (allTrips) allTrips這種打印出來:

Results<Trip> (
    [0] Trip { 
     Id = 47d86d34-b6f2-4a9f-9e31-30c81a915492; 
     CreatedOn = 2016-01-20T23:39:41.995Z; 
     LastModified = 2016-01-20T23:44:39.363Z; 
    } 
) 
+0

'alltrips'的結果是什麼? –

+0

在第一次編輯中添加了輸出 –

+0

我沒有看到'all'首先出現在'alltrips.first'中...... –

回答

2

一個境界Object子類的實例變量只用於那些尚未被加入到一個域對象。將對象添加到Realm或從Realm中檢索對象後,對象獲取器和設置器將直接從Realm訪問數據,而不使用實例變量。這就是實例變量沒有你期望的值的原因。

+0

嗨@bdash,你在哪裏找到這些信息? – Zeb

+2

我在Realm上工作。 – bdash

+0

@bdash那麼解決方案是什麼?謝謝! –