arrays - Realm 对象返回零(Swift)

标签 arrays swift realm cllocationcoordinate2d mkpolygon

我有一个自定义多边形对象,因此我可以将 map 叠加层保存到 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)

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 子类的 StringDoubleObject 属性需要用 dynamic 修饰符允许 Realm 覆盖属性的 getter 和 setter。如果没有这个,Swift 编译器将直接访问对象的实例变量,这不会为 Realm 提供任何从 Realm 文件读取或写入数据的机会。参见 Realm 的 model property cheatsheet快速了解如何声明每种受支持类型的属性。

关于arrays - Realm 对象返回零(Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37517916/

相关文章:

android - Realm 定义自定义查询条件

arrays - swift :changing the content of an array gives me an error

javascript - 将 ruby​​ 方法移植到 javascript

swift - 使用 AVMutableVideoComposition 导出后,纵向视频呈现为横向

swift - 在 Swift 中调用存储在数组中的函数会产生 "Unexpected trailing closure"

android - Rxjava + 从不正确的线程访问 Realm

ios - RealmSwift 3.1.0 armv7 支持

c++ - 通过在堆栈上传递 std::array 进行 API 调用是否有优势

C - 数组的递归累加和

ios - 核心数据 : Not casting Coredata Fetch Results to Objects