我正在尝试将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”
符号? 提前致谢
答案 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
如果有帮助,请告诉我!