Realm 基于属性值检索单个领域对象
如何在使用领域检索数据时返回具有值的类? 我正在尝试使用此代码,但不允许使用swift 3:Realm 基于属性值检索单个领域对象,realm,swift3,Realm,Swift3,如何在使用领域检索数据时返回具有值的类? 我正在尝试使用此代码,但不允许使用swift 3: static func getInfoById(id: String) -> DataInfo { let scope = DataInfo () let realm = try! Realm() scope = realm.objects(DataInfo.self).filter("IdInfo == %@", id) return scope } 您的代码r
static func getInfoById(id: String) -> DataInfo {
let scope = DataInfo ()
let realm = try! Realm()
scope = realm.objects(DataInfo.self).filter("IdInfo == %@", id)
return scope
}
您的代码
realm.objects(DataInfo.self).filter(“IdInfo==%@”,id)
返回一个结果
(数据信息的过滤集合),因此您并不是真正返回数据信息
对象。您可以先调用scope.first
从结果中获取一个DataInfo
static func getInfoById(id: String) -> DataInfo {
let realm = try! Realm()
let scope = realm.objects(DataInfo.self).filter("IdInfo == %@", id)
return scope.first!
}
尽管如此,我不建议强制展开,因为找不到任何项目,强制展开nil值会导致崩溃。因此,您可以返回一个DataInfo?
static func getInfoById(id: String) -> DataInfo? {
let realm = try! Realm()
let scope = realm.objects(DataInfo.self).filter("IdInfo == %@", id)
return scope.first
}
static func getInfoById(id: String) -> DataInfo? {
let realm = try! Realm()
return realm.object(ofType: DataInfo.self, forPrimaryKey: id)
}
或者,如果您在领域对象子类中明确声明IdInfo
是您的主键,则可以使用Realm.Object(ofType:DataInfo.type,forPrimaryKey:id)
static func getInfoById(id: String) -> DataInfo? {
let realm = try! Realm()
let scope = realm.objects(DataInfo.self).filter("IdInfo == %@", id)
return scope.first
}
static func getInfoById(id: String) -> DataInfo? {
let realm = try! Realm()
return realm.object(ofType: DataInfo.self, forPrimaryKey: id)
}
最后一段代码显示无法转换结果类型“对象”?“对于预期类型的DataInfo,我可以使用为!要分析的数据信息?我的错,函数的返回类型应该是可选的,即
DataInfo?
。确定,现在显示:类型DataInfo没有成员类型
。。。我猜是DataInfo.self
道歉,又一个打字错误DataInfo.type
应该是DataInfo.self
。编辑了答案。