2017-12-14 19 views
0

マップ上で位置がタップされるたびにインスタンス化される領域オブジェクトサブクラスがあります。私のレルムオブジェクトのサブクラスである:私のマップビューコントローラ(GMSMapViewDelegate)でRealmオブジェクトのサブクラスのプロパティにアクセスできないサブクラス

final class MapLocation:Object { 
    @objc var text = "" 
    @objc var latitude = Double() 
    @objc var longitude = Double() 
} 

、私は、マップの各タップ上の場所を追加してい:

func mapView(_ mapView: GMSMapView, didTapAt coordinate: CLLocationCoordinate2D) { 
    let lat = coordinate.latitude 
    let lon = coordinate.longitude 
    index += 1 

    let marker = GMSMarker() 
    marker.position = coordinate 
    marker.map = mapView 

    try! realm?.write { 
     let location = MapLocation(value: ["latitude":lat, "longitude":lon, "text":"locaton-\(index)"]) 
     self.items.append(location) 
     self.items.realm?.add(location) 
    } 
} 

このビューコントローラの負荷、私が欲しいです前のセッションで作成されたポイントを表示します。私は次のようにしています:

このforループでは、MapLocationオブジェクトの永続リストを取得していることを確認しました。私はこのループ内ながらpo print(location)を行うと、私は正しく、次を得る:

MapLocation { 
    text = locaton-1; 
    latitude = 50.73600783337027; 
    longitude = 4.882587678730488; 
} 

はここに私の問題です。これらのプロパティにアクセスすることはできません。たとえば、次のようになります。

(lldb) po print(location) 
MapLocation { 
    text = locaton-1; 
    latitude = 50.73600783337027; 
    longitude = 4.882587678730488; 
} 
(lldb) po print(location.longitude) 
0.0 
(lldb) po print(location.latitude) 
0.0 
(lldb) po print(location.text) 
nil 
(lldb) 

ここに示すように、プロパティは保存されていますが、取得時には使用できません。誰がなぜこれが起こっているのか教えてもらえますか?ありがとう!

答えて

3

プロパティをdynamicとマークする必要があります。

+0

ありがとうございます。私はそれが私が見落としていた単純なものでなければならないことを知っていた – Pheepster

関連する問題