2011-03-24 2 views
0

사용자가 편집 할 수있는 배열을 plist에 저장합니다. 내 질문은 코드에서 코드를 구현하는 위치는 어디입니까? 응용 프로그램을 종료하는 방법 중 하나처럼?파일 저장 방법을 추가하려면?

- (void)applicationWillTerminate:(UIApplication *)application 
    { 
     [self saveCode]; 
    } 

    - (void)saveCode 
    { 
     SArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"patientList.plist"]; 
    [myPatients writeToFile:path atomically:YES]; 
} 
+0

배열을 저장하는 경우 coredata 프레임 워크를 살펴보고 데이터를 데이터베이스에 저장하는 것이 좋습니다. –

+0

나는 아직 배울 기회가 없기 때문에 CoreData를 사용하지 않고 있으며 시장에 최대한 빨리 제품을 공급하고 싶습니다. 아마 그것을 배우고 개정판에서 구현할 것입니다. 내 데이터 모델은 꽤 기본적이므로 배열과 사전을 가진 목록은 지금은 괜찮을 것이다. –

+1

그렇지만 일단 시장에 나오면 이전에 대한 개념이 없습니다. 나는. 데이터를 저장하는 방식 (예 : 스키마)이 변경 될 수 있으며, 변경 한 경우 앱의 버전을 확인하고 버전 2.0으로 데이터를 가져 오기 위해 이전 코드를 작성해야합니다. CoreData는 배우기가 어렵지 않으며 이와 같은 문제를 해결하는 것은 올바른 방법입니다. –

답변

2

나는 그것이 당신이 당신의 데이터 관리자를 구현 한 방법에 따라 달라집니다 생각 :

나는 이런 식으로 뭔가를 제안 코드

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"patientList.plist"]; 
[myPatients writeToFile:path atomically:YES]; 
+0

네이선 감사합니다, 이것에 대한 자세한 내용은? 나는 싱글 톤 –

+0

에 익숙하지 않고 코레 데이터를 사용하지 않는다. –

+0

싱글 톤을 사용하기 위해 코어 데이터를 사용할 필요는 없다. 싱글 톤은 디자인 패턴 (http://en.wikipedia.org/wiki/Singleton_pattern)으로,이 경우 모든 단일 데이터 인스턴스에 대한 데이터 액세스/조작을 통합합니다 (하나 이상의 인스턴스가 존재하지 않음). 일부는 b/c를 좋아하지 않습니다. 기본적으로 전역 상태이지만 데이터에 대해서는 매우 잘 작동합니다. 그 짧은 것은 init 및 class 메소드 (일반적으로 sharedInstance라고 함)와 메소드가있는 클래스입니다. [[YourSingleton sharedInstance] writeData : YourArray]와 같이 호출합니다. [AppDelegate sharedApplication]은 싱글 톤입니다. –

0

입니다. 데이터 액세스/쓰기를 처리 할 싱글 톤이 있다면 싱글 톤 어레이가 업데이트됨에 따라 파일에 데이터를 쓰는 것이 어떻습니까? 이렇게하면 예기치 않은 일이 발생할 경우 데이터가 항상 저장된다는 것을 확신 할 수 있습니다.

요르단은 분명히 하나의 경로라고 제안하지만 appWillResign과 willTerminate를 사용합니다.

+0

감사합니다. 앱 위임장에 이것을 넣어야합니까? 배열을 제시하는 viewcontroller가 아닙니다. –

+0

어떤 이유로 테스트 코드가 작동하지 않습니다. –

+0

AppDelegate가 정확하고 NSArray의 원본 코드에 구문 오류가 있습니다. 또한 myPatients를 AppDelegate에 정의해야합니다. – Jordan