2012-04-26 3 views
0

plist에 일부 설정이 있지만 앱을 죽이면 거기에 저장된 모든 데이터가 손실됩니다.plist의 내 정보가 저장되지 않습니다.

가 .H

@property (retain, nonatomic) NSString *plistFilePath; 
-(IBAction)setHomepage:(id)sender; 

.m 

@syntehzise plistFilePath; 

-(IBAction)setHomepage:(id)sender{ 
plistFilePath = [NSString stringWithString:[[NSBundle mainBundle] pathForResource:@"settings" ofType:@"plist"]]; 
    NSMutableDictionary *data= [[NSMutableDictionary alloc] initWithContentsOfFile:plistFilePath]; 
    [data setObject:@"http://www.google.com" forKey:@"Homepage"]; 
    [data writeToFile:plistFilePath atomically:YES]; 
    [data release]; 

} 

내가 뭔가 잘못하고 있는가 :

이것은 내가 사용하고 코드는? 다른 클래스 또는 differents 메소드를 사용해야합니까? 내가 정보를 잘 저장하는 이유를 알지 못하기 때문에 나를 도와주세요.하지만 앱을 죽일 때 잃어 버립니다.

답변

1

이미 언급했듯이 번들은 읽기 전용입니다.

복사 된 plist에서 '설정'을 설정하지 않는 것이 좋습니다. plists는 관리해야 할 한 가지 일뿐입니다. 대신, 기본 plist에서 NSUserDefaults and import your defaults을 사용하지 않는 것이 좋습니다. 예를 들어, 프로젝트에 새 PLIST를 추가하고, 대리인이 추가 :

// Store the data 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setObject:@"http://mattmelton.co.uk" forKey:@"HomePage"]; 
[defaults synchronize]; 

을 그리고 이런 식으로 검색 :

// Get the shared defaults object 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

// Register the defaults each time the app loads 
NSString *defaultsFile = [[NSBundle mainBundle] pathForResource:@"Defaults" ofType:@"plist"]; 
NSDictionary *defaultsDict = [NSDictionary dictionaryWithContentsOfFile:defaultsFile]; 
[defaults registerDefaults:defaultsDict]; 

지금이 같은 데이터를 저장할 수 있습니다

// Retrieve data 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSString *homePage = [defaults objectForKey:@"HomePage"]; 

그리고 외부 파일에 대해 걱정할 필요가 없습니다. 기본적으로 plist는 플랫폼, 사용자 또는 장치에 따라 다를 수 있습니다!

희망이 도움이됩니다.

+0

당신의 대답은 좋습니다! 한 가지 더; appDelegate.m에서 코드의 첫 번째 블록을 작성해야합니까? – adr

+0

개인적으로'applicationDidFinishLaunching'이 좋다고 생각합니다 :) –

1

응용 프로그램 번들이 읽기 전용입니다. 파일을 배포 한 다음 업데이트하려면 응용 프로그램이 처음 실행될 때 번들에서 문서 폴더로 이동하십시오.

관련 문제