2011-08-18 6 views
1

정말 큰 속성 목록 파일 (약 2 MB 큰) 및 응용 프로그램에서 데이터를 사용해야합니다. 그러나 크기 때문에 모든 데이터를 일종의 nsdictionary에 저장하는 것이 정상적인 것은 아닙니다. 나는 다음과 같은 것을 의미합니다 :큰 plist 질문

NSString *path = [[NSBundle mainBundle] pathForResource:@"file" ofType:@"plist"]; 
someDictionary = [[NSDictionary alloc] initWithContentsOfFile:path]; 

이 plist에서 데이터를 얻거나 plist 파일 대신 사용할 것을 권장합니다.

+3

어떤 방식 으로든 plist를 분할해야합니다. 아마도 큰 plist를 메모리에로드하지 않고 읽을 수있는 쉬운 방법은 없습니다. 또한 plist를 직렬화하는 데 바이너리 형식 중 하나를 사용하면 순수 텍스트보다 공간이 훨씬 더 효율적입니다. – mrueg

답변

2

앱을 프로파일 링하기 전에이를 최적화하지 않겠습니다. 2MB의 메모리를 사용하면 소리가 많이 나는 것처럼 들리지만 게임의 소리와 이미지의 배수를로드하는 게임이 있습니다. 귀하의 애플 리케이션이 모두 2MB의 데이터에 관한 것이라면 저는 그것을 메모리에로드하여 사용하는 것이 합법적이라고 생각합니다.

로드가 너무 느린 경우 NSKeyedArchiverNSKeyedUnarchiver을 사용하여 데이터를로드하는 것이 좋습니다. 그것들은 plist를로드하는 것보다 빠르며, 논리적 인 부분에서 데이터를 분리 할 수 ​​있다면 데이터의 청크를 선택적으로로드 할 수 있습니다.

또 다른 옵션은 물론 SQLite 또는 Core Data를 사용하는 것입니다. 그것들은 데이터의 '테이블'에 이상적입니다. 둘 다 큰 파일을 처리 할 수 ​​있습니다.