다른 plist를 응용 프로그램 번들 코드에 현명하게 복사 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1136166

문제

내 질문은 제목에 위에 언급되어 있지만 다시 여기에 쓸 것입니다.

다른 plist를 응용 프로그램 번들 코드에 현명하게 복사 할 수 있습니까 ??

이것은 실제로 나의 이전 질문과 약간 관련이 있습니다.) 프로그래밍 방식으로 사전 속성 목록을 만듭니다

하지만 plist를 쓸 수 있기 때문에 (그리고 내가 뭔가 잘못하고 있는지 테스트) 작성된 파일을 복사 할 수 있는지 궁금합니다.

[testBook writeTofile:@/Users/jack/testbook2.plist" atomically:NO];

내 응용 프로그램 번들에 코드에서 (여기서 읽을 수 있도록 NSString *path = [[NSBundle mainBundle] bundlePath]; NSString *dataPath = [path stringbyAppendingPathcomponent:@"testbook2.plist"];

예를 들어 메인 펀들 대신 다른 길에서 직접 내 plist를 읽을 수 있다면 다른 대안이 좋습니다.

도움이 되었습니까?

해결책

물리적으로, 그렇습니다. 때때로 가능합니다.

아니,하지 마세요 !!

좋아 ... 앱 번들에 물건을 복사하는 것은 나쁘다. 앱 번들은 설정이나 데이터를 유지하는 곳이 아닙니다. 앱 번들을 읽기 위해 생각해야합니다. 여러 가지 이유로이 작업을 수행해야합니다.

  1. 대부분의 경우 Mac OS X 시스템의 사용자는 때때로 앱에 쓸 수있는 권한이 있습니다. 관리자 계정을 사용하지 않는 어린이 또는 학교에서 실험실 배치에 대해 생각해보십시오.
  2. 코드 디자인을 무효화합니다. 응용 프로그램에 서명하면 서명이 변경되고 CodesIGN을 중단하여 모든 종류의 이상한 문제가 발생합니다 (앱이 가진 방화벽 권한을 잃어 버리고 앱이 변경되었다고 말하고 키 체인 허가를 다시 요청하는 등). 앞으로 앱을 조작하는 것은 큰 보안 적기이기 때문에 이것은 또한 모든 종류의 경고를 나타낼 수 있습니다.
  3. iPhone에서는 작동하지 않습니다. 그것은 문제가되지 않을 수도 있지만, 모든 사람이 iPhone 에서이 코드를 사용하려는 경우 앱 번들은 샌드 박스로 Readonly입니다.

이런 종류의 물건을 넣을 수있는 올바른 장소는 응용 프로그램 지원 폴더의 하위 폴더에 있습니다.

다른 팁

당신이하고있는 일을 정확히 알지 못하지만 응용 프로그램에 따라 응용 프로그램 지원 디렉토리를 사용할 수 있습니다.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
if ([paths count] > 0) {
    NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"App Name"];
    // Create the directory if it doesn't exist, etc.
} else {
    NSLog(@"Fail!");
    // ...
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top