ios - Realm Swift 返回所有 nil 值的对象

标签 ios swift realm alamofire objectmapper

我正在使用 ObjectMapper 将 JSON 对象解析为 Realm。

我的类(class)旅行看起来像这样:

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 Browser,看起来值已正确写入数据库。但是,读取这些值会返回一个全为 nil 值的 trip 对象。这是为什么?

编辑:我使用 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;
    }
 )

最佳答案

Realm Object 子类的实例变量仅用于尚未添加到 Realm 的对象。在将对象添加到 Realm 之后,或者对于从 Realm 检索到的对象,对象的 getter 和 setter 直接从 Realm 访问数据,而无需使用实例变量。这就是实例变量没有您期望的值的原因。

关于ios - Realm Swift 返回所有 nil 值的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35451430/

相关文章:

ios - 方括号之间的 Restkit request.body 值

ios - 如何在导航栏右侧显示注销按钮以从应用程序注销?

android - RealmObject 的 Kotlin 数据类

swift - 字典顺序错误 - JSON

objective-c - 将 NSCoding 与 Realm 模型对象一起使用

ios - 如何使用 RxSwift、RxRealmDataSources 和 UISearchController 过滤结果?

ios - 如何防止 iOS 消息应用裁剪粘贴的图像?

objective-c - 弹出 ABAddressBook 模式,仅包含有电子邮件的联系人

swift - 为什么焦点上的 searchBar 会稍微改变文本的颜色?

ios - 为什么 beginGeneratePlaybackNotifications 会产生错误?