2013-03-22 4 views
0

나는 메모리에로드되는 것을 피하기 위해 큰 (6 ~ 7MB) keyvalue 파일을 가진 아이폰 앱을 가지고있다. 그것은 매우 드물게 사용되며, RAM의 양을 씹는 것은 불필요한 것처럼 보입니다.메모리에로드하지 않고 아이폰 앱에서 룩업 테이블을 갖는 가장 좋은 방법

는 지금은 형식

KEY VALUE 

에서 라인 플랫 텍스트 파일입니다하지만 난 그것을 그러나 가장 적합한 저장하는 기쁘게 생각합니다.

가장 좋은 방법은 무엇입니까? SQLite는 옵션이지만 꽤 큰 솔루션 인 것 같습니다. 나는 coredata가 SQLite에 대한 좋은 인터페이스라고 들었지만 이것은 여전히 ​​전체 파일을 nsdictaionary로 메모리에로드하는 것과 관련이 있다고 생각합니다.

답변

2

먼저 SQLite는 "중량급"솔루션이 아닙니다. 메모리 요구 사항이 매우 낮으며 성능이 좋습니다. SQLite를 사용한다면 Objective-C에서 사용하기 쉽게 FMDB 나 PLDatabase와 같은 래퍼가 필요할 것입니다.

다음으로 코어 데이터는 SQLite의 래퍼가 아닙니다. 은 내부적으로 SQLite를 사용하지만 이는 핵심 데이터 API에 노출되지 않은 구현 세부 사항입니다. 핵심 데이터는이 상황에서 작동하지만 SQL 스타일 용어로 생각하면 그 부분을 망칠 것이라는 것을 보장합니다.

테이블을 거의 사용하지 않는 경우 가장 간단한 방법은 JSON 또는 속성 목록으로 저장하고 필요할 때마다 전체 내용을 읽는 것입니다. 작업이 끝나고 메모리 제한을 미루고 있지 않은 상태에서 언로드 할 때는 조심해야합니다. 걱정할 필요가 없습니다. 더 자주 필요한 곳으로 가려면 SQLite 또는 Core Data 중 하나를 고려하십시오. 전체 값을 메모리에로드하지 않고도 필요한 값을 찾을 수 있습니다.

1

모든 키를 메모리로로드하는 키를 어떻게 검색합니까?

독자적인 색인 체계를 구현하거나 SQLite (코드가 이미 다른 일부 응용 프로그램 또는 서비스로 인해 메모리에있을 가능성이 있음)를 사용할 수 있습니다.

0

6MB 또는 7MB가 크지 않습니다. 따라서 사전에로드 한 다음 삭제할 때 링크를 삭제할 수 있습니다. 또는 직접 쿼리를 작성하고 키를 스캔하는 파일 줄을 읽을 수도 있습니다. 그러나 6-7MB는 크지 않습니다.

파일 내용을 제어하는 ​​경우 기존 Apple 프레임 워크를 사용하여 plist으로 작성한 다음 plist을 사전으로 읽고 쿼리하십시오.

관련 문제