数组 – Realm对象返回nil(Swift)
发布时间:2020-12-14 02:27:00 所属栏目:百科 来源:网络整理
导读:我有一个自定义的多边形对象,所以我可以将地图叠加保存到Realm.我能够成功创建这个对象,但是当我想要检索var多边形对象时,它返回nil.当我打印多边形对象时,它会将所有数据打印出来. 这是它打印出来的样本. CustomPolygon { name = Polygon1; id = p1; polygo
我有一个自定义的多边形对象,所以我可以将地图叠加保存到Realm.我能够成功创建这个对象,但是当我想要检索var多边形对象时,它返回nil.当我打印多边形对象时,它会将所有数据打印出来.
这是它打印出来的样本. CustomPolygon { name = Polygon1; id = p1; polygon = Polygon { coordinates = RLMArray <0x7f928ef36230> ( [0] Coordinate { latitude = -36.914167; longitude = 174.904722; },[1] Coordinate { latitude = -36.9325; longitude = 174.957222; },. . . ); }; } 我的函数从Realm加载数据 func loadOverlaysFromRealm(){ do { let realm = try Realm() let polygons = realm.objects(CustomPolygon) for p in polygons { var coordinates = [CLLocationCoordinate2D]() print(p) // !!!!! prints out what is above print(p.polygon) // !!!!! Returns nil. if let coordinateList = p.polygon?.coordinates as? List<Coordinate> { for coordinate in coordinateList { coordinates.append(CLLocationCoordinate2DMake(coordinate.latitude,coordinate.longitude)) } } print(coordinates) // prints "[]" let polygon = MKPolygon(coordinates: &coordinates,count: coordinates.count) self.map.addOverlay(polygon) } } catch let error as NSError { print(error.localizedDescription) } } 我的课程 class CustomPolygon: Object { var name:String = "" var id:String = "" var polygon:Polygon? = nil } class Polygon: Object { var coordinates = List<Coordinate>() } class Coordinate: Object { var latitude:Double = 0.0 var longitude:Double = 0.0 }
需要使用动态修饰符声明Object子类的String,Double和Object属性,以允许Realm覆盖属性的getter和setter.如果没有这个,Swift编译器将直接访问对象的实例变量,这不会为Realm提供从Realm文件读取或写入数据的任何机会.有关如何声明每种受支持类型的属性的快速概述,请参阅Realm的
model property cheatsheet.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |