Swift realm.io可以使用object.getValueForKey(“key”)获取对象属性,但不能作为object.key

时间:2016-02-09 15:35:20

标签: ios swift xcode7 realm

我正在尝试将localStorage数据迁移到realm.io一整天... 现在我面临的唯一问题是我可以使用

获取对象属性
object.valueforKey("key")

但不使用更简单的

object.key

在这里,您可以享受我的代码

        let realm = try! Realm()
        let predicate = NSPredicate(format: "groupID = %@", group.valueForKey("groupID") as! String )
        let current = realm.objects(apiGroup).filter(predicate)
        let currentGroup = current[0]
        print(currentGroup.valueForKey("token") as! String)
        print(currentGroup.token)

当我执行时,它已在控制台上打印出来。

  

56abbf408cfea7941a8b30b7

fatal error: unexpectedly found nil while unwrapping an Optional value

请告诉我这是正常行为还是我可以做点什么来获得

  

“object.key”

符号? 提前致谢

2 个答案:

答案 0 :(得分:0)

感谢大家的意见。我最终用自定义init创建了一个自定义对象并将realm对象传递给它... 然后我循环使用realm对象将相同的对象属性分配给自定义对象...示例

class Images:Object{
var picid:String = ""
var path:String = ""
var timeStamp:NSDate!
override class func primaryKey() -> String{
    return "picid"
}
}

class realmImages{
var picid:String!
var path:String!
var timeStamp:NSDate!
init(object:Images){
    picid = object.valueForKey("picid") as! String
    path = object.valueForKey("path") as! String
    timeStamp = object.valueForKey("timeStamp") as! NSDate
}
}

答案 1 :(得分:0)

坚持下去!我想我实际上并没有理解这个问题!

如果.token属性实际上是您班级的成员,那应该绝对有效。只是为了确认,您是否正确地根据the documentation定义了您的Realm模型子类的成员?

class APIGroup: Object {
  dynamic var token = ""
}

如果是这样,并且你仍然遇到麻烦,那么Swift可能无法推断从过滤器返回的对象类型不是你的APIGroup对象(这可以解释为什么{{1仍然有效。)

如果是这种情况,说明类型应该有帮助:

valueForKey

如果有帮助,请告诉我!