내 응용 프로그램에 의 배열을 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
프로토콜을 준수하므로 배열 MKPolylineView
에 MKPolyline
의 배열을 변환했습니다. 문제는 나중에지도에 다시 추가 할 때 MKPolyline
초로 다시 변환 할 수 없다는 것입니다. 그걸 어떻게하는 지 아는가? 이 코드에서
충돌 :
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 인 'polyline'속성을 가지고 있습니다. 폴리 라인 뷰에서 폴리 라인을 제공하기를 바랍니다. – Saran
그래, 나는 그것을 보았고 희망에 영감을 얻었다 ... 내가 그것을 사용하려고 할 때까지 폴리 라인 속성이 번역에서 (문자 그대로) 손실되었고 mkpolylineviews가 있었지만 해당 폴리 라인 속성은 무. –