2010-01-02 9 views
2

아이폰에서 오브젝트 (NSDictionary와 NSMutableArrays)를 지속하는 것에 대한 생각이 궁금합니다. 내 머리에 몇 가지 옵션을 겪었어요아이폰에 데이터 오브젝트 유지하기

:

1) 우리는 NSUserDefaults를 사용하여 지속,이 방법은 가장 쉬운 것 같다 나는 종류의 단지 가서 이것을 사용하고 싶습니다. 저장할 데이터는 수 킬로바이트의 개체 일뿐입니다.

2.). NSKeyedArchiver (정확한 이름은 저에게 atm을 사용합니다)를 사용하여 보관/직렬화 한 다음 SQLITe 데이터베이스에 저장합니다. 하지만 그 문제는 다음과 같습니다 :

전화에서 데이터가 변경되면 데이터가 자동으로 저장되어야합니다. NSUserDefaults 동기화 방법이 있지만 방법 2에 대한 개체의 전체 배열을 다시 보관하고 데이터베이스에 저장해야 할 거라고. 이것은 많은 일처럼 보입니다.

3. 이 것을 잊어 버렸습니다. CoreData에 대한 정보를 들었지만 정확하게 이해할 수 있을지 확신 할 수 없습니다.

그럼 너희들은 어떻게 생각하니? 다른 제안이 있으십니까?

답변

6

마일으로 가서 코어 데이터를 사용하는 것이 좋습니다. 먼저 당신이 새로운 일을 배울 수

  • 하는 좋은 것.
  • 하지만 데이터가 전체 데이터 집합을 읽는 대신 청크로 가져 오므로 앱이 더 빠르게 시작되고 데이터를 훨씬 더 유창하게 처리합니다.

... 두려워하지 말고 그냥 시도하십시오. 작게 시작하고 계속하십시오.

+2

동의합니다. iPhone 용 핵심 데이터 템플리트 중 하나를 시작하여 함께 사용하십시오. 템플리트의 코드를 프로젝트에 직접 복사하여 붙여 넣기하면 빠르게 시작하고 실행할 수 있습니다. –

+0

동의합니다. : 핵심 데이터는 배열 및 사전이 아니므로,이를 활용하려면 핵심 데이터를 중심으로 앱을 설계해야합니다. CD는 파일 시스템과 같은 볼트 식 저장 시스템이 아닙니다.앱의 핵심 요소입니다. –

+0

위대한 답변,하지만 당신은 NSKeyedArchiving 단일 도메인 개체 또는 NSDictionary의 단순과 논쟁 수 없습니다. – bentford

4

생각해 보면 NSDictionaryNSArraywriteToFile:atomically: 인스턴스 메서드를 사용하여 주어진 파일 이름에 serialize하고 씁니다. 당신은 당신의 NSDictionary 또는 NSArray에 대한 관찰자를 추가 할 수 있습니다.

1

많은 앱에서 큰 성공을 거두고 NSKeyedArchiverwriteToFile:atomically:을 모두 사용했습니다.

성능이 우수했습니다. 텍스트의 수천 줄을 반복적으로 유지할 수 있으며 예고하지 않을 수 있습니다.

개인적으로 쿼리하지 않는 한 개인적으로 sqlite는 사용하지 않습니다. 당신은 NSDictionary 만으로만 얻을 수있는 것을 놀라게 될 것입니다. NSArray

NSKeyedArchiver을 사용하는 이점은 일단 "도메인 객체"생성을 시작하면 동일한 방식으로 유지할 수 있습니다. 이런 이유로 나는 NSKeyedArchiver 시간의 99 %를 사용합니다.