Tôi có đối tượng đa giác tùy chỉnh để tôi có thể lưu lớp phủ bản đồ vào Realm. Tôi có thể tạo ra các đối tượng này thành công, nhưng khi tôi muốn lấy đối tượng var đa giác nó trả về nil. Khi tôi in đối tượng đa giác, nó in ra tốt, với tất cả dữ liệu.Đối tượng Realm trả về nil (Swift)
Đây là mẫu của nội dung in ra.
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;
}, . . .
);
};
}
Chức năng của tôi cho dữ liệu tải từ 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)
}
}
Lớp học của tôi
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
}