2013-06-27 1 views
0

오른쪽 ive 저장 버튼을 클릭 할 때 정수를 저장하는이 코드는 다음과 같습니다. 앱이 종료되었지만 자동으로 처리해야합니다. 어떻게해야합니까? 이걸로 이러는거야? 전체 사과 코딩 작업에 새로운 것이므로 어떤 도움을 환영합니다.앱이 종료 될 때 정수 저장하기 - 사과 iOS

-(IBAction)SaveNumber:(id)sender{ 
    [[NSUserDefaults standardUserDefaults] setInteger:Number forKey:@"savenumber"]; 
} 

- (void)viewDidLoad { 

    Number = [[NSUserDefaults standardUserDefaults] integerForKey:@"savenumber"]; 
    ShowSavedNumber.Text = [NSString stringWithFormat:@"%i",Number]; 

    [super viewDidLoad]; 
} 
+0

난 AppDelegate에 해당 비트의 코드를'- (void) applicationDidEnterBackground : (UIApplication *) application'에 추가하기를 원할 것입니다. 그러면 사용자 입력없이 "자동"으로 원하는 것을 저장합니다. – Putz1103

답변

0

문제는 다음과 같습니다

애플의 참조입니다? 당신은 응용 프로그램 내부의 문서 디렉토리에이 값을 저장할 파일이 없습니다.

앱의 모든 값을 저장할 수 있지만 저장 및 읽기 용 파일을 사용하거나 서버의 URL을 통해 저장 및로드해야합니다. file.plist, SqlLight, json과 MySql.

첫 번째 간단한 절약은 AppDelegate.m 아래에 파일 .plist을 사용하고 있습니다. 파일이 존재하면 디렉토리를 확인하고 문서 디렉토리 (유일한 쓰기 가능한 폴더) 안에 복사해야하지만 그 후에 Dictionary, MutableDictionary 및 다른 클래스를 사용하여 동일한 파일에로드하고 저장하는 방법을 배워야합니다. 나는 수표와 같은 첫 번째 단계를 이해할 수 있도록 돕고 .plist, read, first base를 만들어 저장하도록 도와 줄 수 있습니다.하지만 다른 것은 많은 코드와 yopu가 다른 자습서를 봐야합니다.

그래서 .plist 파일을 생성하고이 같은 구조 변경 : enter image description here 변경 키를 원하는했습니다,하지만 당신이 더 많은 항목을 추가하려는 경우 사전 같은 내부에 다른 행을 추가해야 더 많은 문자열 값을 포함 기억 루트 배열. [self createPlistFile];

: 전화를 추가 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {에서

- (void)createPlistFile{ 

    NSError *error; 
    NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"yourFile.plist"]; 

    NSFileManager *fileManager = [NSFileManager defaultManager]; 

    if (![fileManager fileExistsAtPath: path]) 
    { 
     NSString *bundle = [[NSBundle mainBundle] pathForResource:@"yourFile" ofType:@"plist"]; 

     [fileManager copyItemAtPath:bundle toPath: path error:&error]; 
    } 

} 

:

Root = Array 
Item0 > some string with value 
Item1 > some string with value 

이제 응용 프로그램 런칭은, 내부 귀하의 AppDelegate.m 함수를 만들 때 쓰기 가능한 문서 폴더 안에이 파일을 복사해야

이제는 문서 폴더에 파일이 있는지 먼저 확인하고, false이면 앱이 새 파일을 만듭니다.당신의 ViewControlle.h 쓰기에

:

@interface ViewController : UIViewController { 
    NSMutableArray *loadData; 
} 

@property (nonatomic, strong) NSMutableArray *loadData; 

ViewController.m에 다시 와서 쓰기 :

@synthesize loadData; 

NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
    NSString *plistPath = [documentsDirectory stringByAppendingPathComponent:@"yourFile.plist"]; 
    NSMutableArray *dataDict = [[NSMutableArray alloc] initWithContentsOfFile:plistPath]; 
    self.loadData = dataDict; 

확인 표준 코드 지금 여기

앱 내부에 새 파일을 읽기 이제는 올바르게로드 된 Documents Directory 내에 새로운 PLIST 파일을 만들었지 만 이제는 저장해야합니다.이 방법은 저장하는 기본 방법이지만 실제로는 그와 내가 모두 여기에 쓸 수 많은 모드)

- (IBAction)save:(id)sender { 

    NSMutableDictionary *nr2 = [[NSMutableDictionary alloc] init]; 
    [nr2 setValue:emittente.text forKey:@"plistKey"]; 
    [nr2 setValue:link.text forKey:@"plistKey"]; 
    [nr2 setValue:images.text forKey:@"plistKey"]; 
    [nr2 setValue:web.text forKey:@"plistKey"]; 

    [YouMutableDict addObject:nr2]; 
    [YouMutableDict writeToFile:listFav atomically:YES]; 
} 

이 좋아 그게 내가 시작이 도움을 희망 전부 네 투표하시기 바랍니다 경우 응용 프로그램에 데이터를 저장하는 방법을 이해)

0

NSUserDefaults에 대한 변경 사항은 자동으로 저장되지 않습니다. 저장하려면 NSUserDefaults 객체에서 -synchronize를 호출해야합니다. 일반적으로 수행 할 계획 인 모든 업데이트를 만든 후에 (실제로 여러 업데이트를 수행해야하는 경우) 한 번이 작업을 수행하려고합니다. 이 값을 저장하려고 할 경우, http://developer.apple.com/library/ios/ipad/#documentation/cocoa/reference/foundation/Classes/NSUserDefaults_Class/Reference/Reference.html

+0

thats 정말 나를 혼란스럽게 만들었습니다. ( – Charlotte

+0

그는 [[[NSUserDefaults standardUserDefaults] synchronize];를 호출하여 응용 프로그램을 종료하기 전에 사용자의 기본값을 동기화합니다. – Putz1103

+0

맞습니다. –