2016-09-28 19 views

cevap

10

Kodunuz realm.objects(DataInfo.self).filter("IdInfo == %@", id) bir Results<DataInfo> (DataInfo filtrelenmiş topluluğu) döndürür, böylece gerçekten bir DataInfo nesne dönen değiliz. Sonuçlardan bir DataInfo almak için scope.first! numaralı telefonu arayabilirsiniz.

static func getInfoById(id: String) -> DataInfo { 
    let realm = try! Realm() 
    let scope = realm.objects(DataInfo.self).filter("IdInfo == %@", id) 
    return scope.first! 
} 

ben zorla unwrapping hiçbir öğe bulundu olacak ve bir kazada bir nil değer sonuçlar zorla unwrapping çünkü önermiyoruz rağmen. Böylece bunun yerine DataInfo? döndürebilirsiniz. Açıkça IdInfo birincil anahtarı olduğunu sizin Diyar Nesne alt sınıfta belirttiğimiz eğer

static func getInfoById(id: String) -> DataInfo? { 
    let realm = try! Realm() 
    let scope = realm.objects(DataInfo.self).filter("IdInfo == %@", id) 
    return scope.first 
} 

Alternatif olarak, bunun yerine realm.object(ofType: DataInfo.type, forPrimaryKey: id) kullanabilirsiniz.

static func getInfoById(id: String) -> DataInfo? { 
    let realm = try! Realm() 
    return realm.object(ofType: DataInfo.self, forPrimaryKey: id) 
} 
+0

son kod gösterileri ı ayrıştırmak için! DataInfo olarak kullanabileceğiniz, beklenen tip DataInfo için sonuç türü 'Nesne?" Dönüştürülemez? – user1801745

+0

Benim hatam, fonksiyonun dönüş türü isteğe bağlı, yani' DataInfo olmalıdır? ' – chrisamanse

+0

Tamam, şimdi görünür.' Tip DataInfo hiçbir üye type' var ... sanırım 'DataInfo.self' – user1801745