Realmでデータを取得しているときに、値を持つクラスを返す方法は?私はこのコードを使おうとしていますが、swift3は許可されていません:
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)
はResults<DataInfo>
(DataInfoのフィルタリングされたコレクション)を返すため、実際にはDataInfo
オブジェクトを返しません。結果からscope.first!
1つを取得するために呼び出すことができます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
}
または、IdInfo
主キーであるRealm Objectサブクラスで明示的に指定している場合は、realm.object(ofType: DataInfo.type, forPrimaryKey: id)
代わりに使用できます。
static func getInfoById(id: String) -> DataInfo? {
let realm = try! Realm()
return realm.object(ofType: DataInfo.self, forPrimaryKey: id)
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加