我的iOS應用程序需要在NSUserDefault
中存儲MKPolyline
。我已經做了很多的研究,我現在知道:在NSUserDefaults中將MKPolyline另存爲NSData
- 是NSUserDefaults的NSCoder
- MKPolyline的一個子類是不NSCoder
的子類,因此,它是很難將折線保存到nsuserdefaults。我已經嘗試了MKPolyline轉換爲NSData的:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:routeLine]; // routeLine is an MKPolyline
[defaults dataForKey:@"key"];
[defaults synchronize];
當我嘗試改變連接線的NSData的轉換,我收到此錯誤信息:
終止應用程序由於未捕獲的異常「NSInvalidArgumentException」,原因:「 - [MKPolyline encodeWithCoder:]:無法識別選擇使用MKPolylineView時如何發送到實例0xba1fd70
我可以成功地進行上述代碼永遠那麼我有問題讓MKPolyline退出視圖。我發現this Q/A on SO,但它不能解決我的問題,因爲它會改變我的應用程序的功能。
如何保存MKPolyline?我可以繼承它嗎?如果是這樣的話會發生什麼?或者有沒有辦法與MKPolylineView做到這一點?我是否錯過了NSCoder?
作爲一個方面說明,實現這個最好的方法可能是'MKPolyline'上的一個類別。 – bdesham 2013-02-18 15:09:30
當然,像'-arrayValue'和'-initWithPointArray:'。 – paulmelnikow 2013-02-18 15:11:41