我有一个自定义的多边形对象,所以我可以将地图叠加保存到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.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。