2015-10-28 1 views
3

У меня есть несколько классов Realm, которые выглядят следующим образом:Как получить объект, который находится в списке в другом объекте, используя область swift?

class Friends: Object { 
    dynamic var name = true 
    dynamic var role = true 
    dynamic var type = true 
    dynamic var owner: Profile? 
} 

class Profile: Object { 
    dynamic var uuid = NSUUID().UUIDString 
    dynamic var name = "" 
    dynamic var date = NSDate(timeIntervalSinceNow: 1) 
    dynamic var section = 0 
    dynamic var code = "" 
    dynamic var gender = 0 
    dynamic var type = "" 
    let friends = List<Friends>() 

    override static func primaryKey() -> String? { 
     return "uuid" 
    } 
} 

class Sub: Profile { 
    dynamic var owner: Master? 
} 

class Master: Object { 
    dynamic var type = "" 
    dynamic var name = "" 
    dynamic var date = "" 
    let subs = List<Sub>() 
} 

Я понимаю, что для извлечения объектов из области я должен сделать это:

var master = try! Realm().objects(Master) 
let profile = master[indexPath.row] 
let date = profile.date 
let name = profile.name 
let type = profile.type 

Вопрос: Как получить объекты из «subs» (List)?

ответ

7

При получении мастер-объект, который вы можете получить доступ к его список Subs, как и любой другой собственности:

let subs = profile.subs 

Это дает вам список, который вы можете итерации по:

for sub in profile.subs { 
    // do something with the sub object 
} 

Или вы можете фильтровать субподрядчики, чтобы найти конкретный объект:

if let subjectWithId = profile.subs.filter("uuid == '7382a8d83'").first { 
    // do something with the subject 
} 

Или вы можете использовать подписку на подписку для доступа элементы по индексу:

let secondProfile = profile.subs[1] 
+0

Спасибо! Это решило мою проблему! – eeschimosu

Смежные вопросы