2010-01-04 10 views
2

내 첫 번째 iPhone 응용 프로그램 (실제로 AppStore에서 이해하고 싶다)을 개발할 때 데이터를 표현하는 좋은 방법이 필요했습니다. 핵심 데이터로가는 대신, 나는 (내 생각에) 클래스를 사용하여 데이터를 표현하기로 결정했다.iPhone 응용 프로그램의 데이터 지속성

나는 MMDot, MMShowMovement 및 MMShow의 세 클래스를 만들었습니다. MMShow는 MMShowMovement의 인스턴스를 보유하므로 MMShowMovement는 MMDot 클래스의 인스턴스를 배열에 유지합니다. 좋은 방법처럼 들리 겠지만, 각 클래스에는 많은 로직이 있으므로 클래스가이 모든 데이터를 나타내는 좋은 방법 인 것처럼 보였습니다.

내 질문에 응용 프로그램을 다시 연 후 데이터를 복원 할 수 있도록이 클래스의 인스턴스를 저장하는 쉬운 방법이 있습니까? NSKeyedArchiver를 사용하여 OS X에서 응용 프로그램을 만들었습니다. iPhone에서도 비슷합니까? 코어 데이터를 사용하여 다시 시작하는 것이 더 쉬울까요? (이 객체는 매우 복잡합니다. 특히 약 15 개의 인스턴스 변수가있는 MMDot입니다. 이제는 복잡하지 않을 수도 있습니다.)

나는 정말로 여기를 잃고있다.

+1

나는 확실히이 평가에 동의 CoreData –

답변

2

절대적으로 NSKeyedArchiver를 사용하여 개체를 유지할 수 있습니다. 나는 두 가지 방법 중 하나의 팬이며, 결정은 대부분 애플리케이션 요구 사항에 달려 있습니다. CoreData에서 객체를 다시 모델링하는 것이 많은 작업이라고 생각하지 않습니다. 응용 프로그램에 대해 아무 것도 모른 채 간단한 모델을 사용하여 간단한 지속성을 수행하는 경우 코어 데이터가 필요하지 않을 수도 있습니다. 복잡한 관계가 있고 응용 프로그램 세션 동안 데이터를 자주 읽거나 지속하는 경우 Core Data는 아마도 가다.

+1

를 사용하는 모델을 다시 것입니다 - 당신은 비교적 간단한 객체를 가지고 잘 알고있는, 그래서 만약 아이폰에서 지원되는 키 입력 아카이빙 및 언 아카이빙을 건축과 함께, 그것을 위해 가라. 반면 Core Data *는 객체 관계에 매우 유용 할 수 있습니다. 또한 다른 이점도 있습니다 (http://stackoverflow.com/questions/1883879/why-should-i-use-core-data 참조). -for-my-iphone-app/1883957 # 1883957) – Tim

+0

MMDot에는 약 15 개의 속성이 있으며 대부분 NSIntegers 및 NSStrings이며 MMShow 및 MMShowMovement 클래스에는 각각 약 3 개의 속성이 있습니다. MMShowMovement는 MMDot의 인스턴스 40 ~ 100 개를 보유하고 MMShow는 MMShowMovement의 인스턴스를 약 4 개 보유합니다. 클래스 간의 유일한 관계는 MMDot에 "counts"특성이 있고 MMShowMovement가 총 개수의 NSInteger를 유지한다는 것입니다. 아카이브 사용을 시도 할 것입니다. 너무 느린 것처럼 보이는 경우. 핵심 데이터로 이동합니다. –

0

많은 개체 인스턴스가있는 경우 핵심 데이터를 사용하는 것이 좋습니다. 캐시를 사용하면 쿼리를 통해 특정 개체 집합을 가져 오는 등의 작업을 수행하는 데 도움이됩니다. KeyArchiving은 소수의 인스턴스를 제외하고는 몇 가지 단점이 있지만 특히 Unarchived 객체의 메모리 누수를 추적하는 것이 더 어렵다면 훨씬 더 유용합니다.

코어 데이터도 결과에 대한 페이징을 수행 할 수 있으므로 필요하지 않은 경우 큰 배열의 엔트리 내용을 가져 오지 못하게 할 수 있습니다.

0

나는 다른 날에 수업을 연재하고 NSUserDefaults를 사용하여 갔다. 나는 단지 내 객체의 모든 내부에 객체를 기반으로 한 고유 한 키를 제공합니다. 나를 위해 빨리 일하는 것 같았습니다.

여기에 대한 블로그를 쓴 : http://technolojiadev.blogspot.com/2009/12/serialize-this.html

관련 문제