ios - Realm returns object with empty RLMArray as property -
i have class country. it's simple subclass of rlmobject. when i'm saving country have regions (property of type rlmarray containing several object of type region. rlmobject subclass) when i'm fetching realm regions nil.
i've double check realm browser , data there. maybe i'm using wrong technique fetch data?
at point use realm-objc because have support devices
country (27 lines)
public class country: rlmobject { public dynamic var name = "" public dynamic var desc = "" public dynamic var id = 0 public var regions = rlmarray(objectclassname: region.classname()) override public static func primarykey() -> string? { return "id" } override init!() { super.init() } public func configure(id:int,json:json){ self.name = json["name"].stringvalue if let desc = json["desc"].string { self.desc = desc } (key:string, value:json) in json["regions"] { let region = region() region.configure(key.toint()!,json:value) self.regions.addobject(region) } self.id = json["id"].intvalue } } countrymanager (36 lines)
public class countrymanager: nsobject { public func savewines(json:json) { var countriesforstore = [country]() let db = rlmrealm.defaultrealm() (key:string, subjson:json) in json{ let country = country() //serialize each country country.configure(key.toint()!,json:subjson) countriesforstore.append(country) } db.beginwritetransaction() db.addorupdateobjectsfromarray(countriesforstore) db.commitwritetransaction() } public func regionsforcountrywithnamelike(name:string) -> rlmresults { let db = rlmrealm.defaultrealm() let countrypredicate = nspredicate(format: "name contains[c] %@", name) let countries = country.objectswithpredicate(countrypredicate) var rawregionnames = [string]() country in countries { if let c = country as? country { region in c.regions{ rawregionnames.append((region as! region).name) } } } let regionnames = "','".join(rawregionnames) let regionpredicate = nspredicate(format: "name in {'\(regionnames)'}") let regions = region.objectsinrealm(db, withpredicate: regionpredicate) return regions } }
try changing public var regions dynamic public var regions, since realm requires rlmarray properties dynamic.
Comments
Post a Comment