Swift 无法将Appdata类型的值转换为预期的参数类型Object.type

Swift 无法将Appdata类型的值转换为预期的参数类型Object.type,swift,realm,Swift,Realm,如何在IOS应用程序中检索领域对象数据 对象类将是: 导入基础 导入RealmSwift 类AppData:对象{ 动态变量id=0 动态变量类型=“” 动态变量标记=“” 动态变量refreshttoken=“” 动态var accessToken=“” 重写静态func primaryKey()->字符串{ 返回“id” } } 我用于填充/更新AppData领域对象的下一个函数: func寄存器(uInstanceParameters:[String:AnyObject],complet

如何在IOS应用程序中检索领域对象数据

对象类将是:

<代码>导入基础 导入RealmSwift 类AppData:对象{ 动态变量id=0 动态变量类型=“” 动态变量标记=“” 动态变量refreshttoken=“” 动态var accessToken=“” 重写静态func primaryKey()->字符串{ 返回“id” } } 我用于填充/更新AppData领域对象的下一个函数:

func寄存器(uInstanceParameters:[String:AnyObject],completionHandler:@escaping([Instance]?,NSError?)->()){
Alamofire.request(Router.register(instanceParameters)).responseJSON{response in
var实例=[instance]()
设AppDataObj=AppData()
让config=Realm.Configuration(
阴谋厌恶:1,
migrationBlock:{migration,oldSchemaVersion in
if(oldschemaversation<1){
}
})
Realm.Configuration.defaultConfiguration=config
让realm=try!realm()
开关响应。结果{
case.success(让json):
让responseObject=json为?[字符串:AnyObject]
append(实例(字典:responseObject!))
AppDataObj.token=(instance.first?.token)!
AppDataObj.tokeType=“实例\令牌”
AppDataObj.id=1
试试看!写吧{
realm.add(AppDataObj,更新:true)
}   
completionHandler(实例,nil)
案例。失败(let错误):
completionHandler(无,错误为N错误)
}
}
}
目前一切正常,您可以在下面看到我可以使用Realm Browser管理AppData对象:

我发现的问题是,当我需要使用领域对象数据进行持久化时,试图检索AppData令牌:

导入RealmSwift
var AppDataObj=AppData()
让data=realm.object(类型:AppDataObj,forPrimaryKey:“id”)
loginParameters[“token”]=AppDataObj.token作为任何对象?-->此行抛出此问题标题中定义的错误

您应该先阅读官方指南

首先,当您想要获取持久化对象时,不需要创建领域对象的实例

其次,应该将实际值传递给
forPrimaryKey
perameter,而不是属性名。您将对象保存为
id=1
,因此它应该是
realm.object(类型:AppDataObj,forPrimaryKey:
)`

对象(ofType:forPrimaryKey:)
方法返回一个领域对象。因此,正确的代码是:

import RealmSwift

let data = realm.object(ofType: AppDataObj, forPrimaryKey: 1)
loginParameters["token"] = data.token