2010-08-02 2 views
0

plist 파일에 일부 데이터를 쓰고 있지만 시뮬레이터에서는 실패했지만 장치에서는 실패합니다. 나는 길을 잃었고, 해결책을 찾을 곳을 모른다. 시뮬레이터의 장치에iphone 파일에 쓰기가 실패합니다.

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; 
[dict setObject:nameField.text forKey:@"name"]; 
[dict setObject:emailField.text forKey:@"email"]; 
BOOL ret = [dict writeToFile:[[NSString alloc] initWithString:[[NSBundle mainBundle] pathForResource:@"settings" ofType:@"plist"]] atomically:YES]; 
NSLog(@"%d",ret); 
[dict release]; 

로그 0을 반환하지만, 1 :

이 내 코드입니다.

누군가 나를 도울 수 있습니까?

답변

0

왜 리소스 디렉토리에 쓰려고합니까? this을 확인 했습니까?

1

응용 프로그램의 번들 폴더에 쓸 수 없으며/tmp, Documents 및 Cache 폴더에만 쓸 수 없으므로 장치에서 오류가 발생합니다. 사용자가 번들을 수정할 수 있었다면 앱의 디지털 서명은 더 이상 유효하지 않으며 누구도 App Store에서 신뢰할 수있는 앱을 안정적으로 얻고 실행할 수 없습니다.

그러나이 방법은 시뮬레이터에서 작동합니다. 운영 체제를 사용하면 응용 프로그램 번들 폴더를 포함하여 홈 폴더의 어느 곳에 나 쓸 수 있기 때문입니다. OS X의 기능은 iOS가 제한된 것과 같은 방식으로 제한되지 않습니다.

이것은 보안에 대한 iOS의 sandbox approach의 일부입니다. 해결책은 write to the /tmp, Documents or Cache folder, instead입니다.

+0

감사 인사 훌륭한 결과 –

관련 문제