在我的應用程序中,我試圖將MKPolylines
的數組存儲到NSUserDefaults
中。MKPolyline - > NSKeyedArchiver - > NSData SIGABRT
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:overlays];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"theKey"];
給出:
[MKPolyline encodeWithCoder:]: unrecognized selector sent to instance 0x169c20`
Terminating app due to uncaught exception
'NSInvalidArgumentException', reason: '-
[MKPolyline encodeWithCoder:]: unrecognized
selector sent to instance 0x1c57e0'
編輯:我取得了一些進展。 MKPolylineView
符合NSCoding
協議,所以我已將MKPolyline
的數組轉換爲MKPolylineView
的數組。問題是,當我想稍後將它們添加回地圖時,我無法將它們轉換回MKPolyline
s。任何想法如何做到這一點?
崩潰這段代碼:
NSData* data = [[NSUserDefaults standardUserDefaults] objectForKey:@"theKey"];
NSArray* overlays = [NSKeyedUnarchiver unarchiveObjectWithData:data];
for(MKPolylineView* a in overlays)
[mapView addOverlay:a.overlay];
2011-10-17 21:15:56.416 Trail Tracker[4269:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
*** First throw call stack:
(0x34b2f8bf 0x36c3a1e5 0x34a8420f 0x35697595 0x6257 0x62db 0x365f77ff 0x36601d53 0x36601cc1 0x366a1339 0x366a014f 0x366fad97 0x649b 0x36671565 0x366e9ce7 0x31fcc943 0x34b03a63 0x34b036c9 0x34b0229f 0x34a854dd 0x34a853a5 0x351f9fed 0x365ec743 0x2c75 0x2c34)
terminate called throwing an exception(gdb)
查看我的編輯請 –
通過只查看類看起來MKPolylineView有一個屬性'折線',一個只讀的MKPolyline。我希望應該從polylineview給你一個折線。 – Saran
是的,我看着那個,並且受到了希望的啓發...直到我試圖使用它並發現某處,折線屬性在翻譯時(字面意義上)正在丟失,雖然有mkpolylineviews,但相應的折線屬性是零。 –