2012-02-12 5 views
0

는 내가 SimpleKML 프레임 워크캐시 사용자 정의 클래스

https://github.com/mapbox/Simple-KML

나는이 라이브러리를 생각 처리하는 데 약 5 초 동안 몇 가지 큰 파일을 가지고 작업을하고 있습니다. 나는 NSData와 같은 것으로 객체를 캐싱하려고 생각했습니다. 나는 애플이 튜토리얼을 읽고

:

https://developer.apple.com/library/mac/#documentation/cocoa/conceptual/Archiving/Articles/archives.html

는하지만 난 정말 nscoder를 사용하는 잘 모릅니다이 작업을 수행하는 가장 좋은 방법입니다. 누군가 올바른 방향으로 나를 가리킬 수 있습니까?

+0

NSCache 및 NSPurgeableData [이 백서에 설명 된대로] (https://developer.apple.com/library/mac/technotes/CachingPurgeableMemory/CachingPurgeableMemory.pdf) 사용을 고려하십시오. – Till

+0

글쎄, 나는 실제로 어딘가에, 파일이나 뭔가 저장할 수있는 무언가를 찾고있다. 그것은 nscache 캔트가 구원받는 것을 좋아한다, 또는, 그것을하는가? – Melvin

답변

1

NSKeyedArchiverNSKeyedUnarchiver을 사용하려고합니다.

당신이 저장하고있는 객체 (그리고 속성으로 가지고있는 개체 및 그 속성 등) 그것이로 객체를 보관,

NSData *savedData = [NSKeyedArchiver archivedDataWithRootObject:someObject]; 
[savedData writeToFile:pathToSaveFile atomically:YES]; 

만큼 간단 다음 NSCoding 프로토콜을 구현하는 경우 NSData를 저장하고 디스크에 저장 한 다음 나중에 데이터를로드하고 데이터에서 개체의 보관을 취소하려면

NSData *loadedData = [NSData dataWithContentsOfFile:pathToSaveFile]; 
SomeClass *foo = [NSKeyedUnarchiver loadedData] 

그렇지 않은 경우 문제의 개체를 올바르게 serialize하려면 initWithCoder:encodeWithCoder:을 재정의해야합니다.

+0

나는 이것을 시도하고 개체를 저장 작동합니다. 그러나 모든 것을 저장하지 않는 것처럼 보입니다. Nsdata 객체의 길이는 299이며 매우 작습니다. 그리고 보관되지 않은 객체로부터 메소드 나 속성에 액세스 할 수 없습니다. 그게 아니라 내가 볼 때 그것은 null cuz 볼 : Melvin

+0

나는 이것을 읽고 나는 모든 일을 올바르게하고있는 것처럼 보인다. https://developer.apple.com/library/mac/#documentation/cocoa/conceptual/Archiving/Articles/archives.html#//apple_ref/doc/uid/20000946-BAJDBJAI – Melvin

+0

SimpleKML 객체는 'NSCoding '프로토콜을 적절하게 사용한다. 수행해야 할 작업에 대한 최신 답변을 확인하십시오. 프로젝트를 수정 한 다음 끌어 오기 요청을 보내는 것이 좋습니다. – yuji