MVC 디자인 패턴을 따르는 간단한 애플리케이션을 작성했습니다. 엑스 코드 프로젝트에서 나는 3 비트가 :아이폰 애플리케이션 디자인 결정?
- AppDelegate에
- 의 ViewController를
- DataModel이
DataModel이 객체는 응용 프로그램에 대한 모든 데이터를 보유하고 나는 그것이에 저장되어 있는지 확인하려면 app-exit에서 재로드하고 app-startup에서 다시로드합니다.
이것이 올바른 방법인지 확실치 않습니다. DataModel에 NSCoding을 적용하고 encodeWithCoder : 및 initWithCoder : 메서드를 추가했습니다.
FlowerStore *flowerStore = [[FlowerStore alloc] init];
그것은 내가 저장 및로드 아래에 나열된 AppDelegate에 방법을 사용 할 필요가 나의 이해는 다음과 같습니다 :
이-(void)applicationDidFinishLaunching:(UIApplication *)application { // LOAD
-(void)applicationWillTerminate:(UIApplication *)application { // SAVE
사람이 올바른 방향으로 날 지점 수 나는 나의의 ViewController 내 DataModel이를 선언 한 어떻게 내가이 일을해야 할까? 관련 예제 내에서 데이터를 직접 아카이브 (또는 보관) 할 수있는 모든 예제 (아래 참조). 앱을 시작하거나 종료 할 때로드 및 저장이 필요한 위치는 어디입니까?
-(void)encodeWithCoder:(NSCoder *)encoder {
-(id)initWithCoder:(NSCoder *)decoder {
도움/정보를 제공해 주셔서 감사합니다.
EDIT_001
: 난 그냥 "제 11 장 데이터 지속성을"achiving에 섹션을이 책을 "시작 iPhone3 개발"에서 확인하고 그들은 내가하고 나쁜 디자인을했을 생각을했을 일을 할. 책에서 그들은 dataModel을 [NSCoding]에 맞추고 인코딩/디코딩 할 메소드를 구현합니다. 그런 다음 viewController에서 viewDidLoad : 및 applicationWillTerminate :를 사용하여 적절한 시간에 도달/달성하지 못하게합니다. 내가 잘못 찾은 것은 UITextField에서 데이터를 가져 오는 것입니까? 내 경우에는 작동하지 않을 UI에 표시되지 않는 저장하려는 데이터가 있습니다. 또한 UI 컨트롤을 통해보기를 보지 않고 dataModel에서 보관/보관하지 않아야합니까? applicationWillTerminate가 NSNotification하지 UIApplication을 사용, 플러스 당신은 또한 추가해야합니다
EDIT_002 : (모두의 ViewController에서)
-(void)viewDidLoad { // LOAD
-(void)applicationWillTerminate:(NSNotification *)notification { // SAVE
참고 :
가까이 얻기는, 지금 당신이 다음을 수행 같습니다 다음 코드는 viewDidLoad의 맨 아래에 있습니다.
UIApplication *app = [UIApplication sharedApplication];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationWillTerminate:)
name:UIApplicationWillTerminateNotification
object:app];
게리
모델에서 저장 /로드 중입니까? 나는 컨트롤러에서 모델 메서드를 사용하고 선언하고 있다는 것에 조금 혼란 스럽다. 하지만 appDelegate에서 작동하는 방법을 잘 모르겠습니다. applicationDidFinishLaunching : 및 applicationWillTerminate :는 무엇입니까? – fuzzygoat