2013-03-20 4 views
0

내 응용 프로그램에 필요한 기본 데이터가 포함 된 텍스트 파일이 있습니다. 내가 파일을 읽을 수 있고, 내가 가진 파일 경로를 얻을 : 내가 사용하는 것이 생각Objective-C로 파일에 쓰려면 어떻게해야합니까?

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Money" ofType:@"txt"]; 

파일에 쓸 수 :

[[HoldString dataUsingEncoding:NSUTF8StringEncoding] writeToFile:fileAtPath atomically:NO]; 

이 그래도 작동하지 않습니다, 나는 또한에 geting 시도 파일 경로 :

NSString* filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString* fileAtPath = [filePath stringByAppendingPathComponent:@"Money.txt"]; 

해당 사항 없음. CoreData를 사용하지 않고 파일에서 읽을 수 있기를 바랍니다.

답변

1

앱 번들 내에있는 경로에는 쓸 수 없습니다. 귀하의 번들은 읽기 전용입니다. 그래서 첫 번째 방법은 효과가 없습니다.

두 번째 방법은 실제로 문서 디렉토리에 올바른 경로를 만들어야합니다. 읽을만한 것이 있는지 확실합니까? 이 디렉토리는 앱이 설치 될 때 비어있게됩니다. 자신이 포함하는 텍스트 파일을 수정하려면 먼저 번들 경로에서 문서 폴더로 복사하십시오.

+0

문서 폴더가 있습니까? 나는이 코드를 가지고있다. ([[NSFileManager defaultManager] fileExistsAtPath : fileAtPath]) { [[NSFileManager defaultManager] createFileAtPath : fileAtPath contents : nil attributes : nil]; } –

+0

@ user1713165 : 문서 폴더가 디스크에 있습니다. 시뮬레이터를 사용하는 경우 Mac에서 Finder를 사용하여 찾아 볼 수 있습니다. 어떤 경우에도 사용자가 직접 상호 작용할 수 없습니다. 필요한 경우 앱의 문서를 넣기에 좋은 위치에 있습니다. –

+0

@ user1713165 : 댓글의 코드 스 니펫이 실제로 아무 것도하지 않습니다. 'nil' 내용으로 파일을 만드는 것은 의미가 없습니다. 아무것도 디스크에 기록되지 않습니다. –

1

앱의 리소스 번들은 읽기 전용입니다 (적어도 실제 장치에서는). 데이터를 Documents 디렉토리와 같은 다른 위치에 작성해야합니다.

대부분의 앱은 파일이 Documents 디렉토리에 있는지 확인합니다. 그렇지 않으면 자원 번들에서 파일을 복사합니다. 그런 다음 모든 읽기 및 쓰기가 사본에 수행됩니다.

+0

. 폴더가 앱에서 변경된 것처럼 보이지만 파일에서는 변경되지 않습니다. –

0

iOS에서는 응용 프로그램 번들이 읽기 전용이므로 쓸 수 없습니다. 이 문제를 해결하는 방법은 문서 폴더를 사용하여 필요한 파일을 저장하고 거기에 데이터를 쓰는 것입니다.

다른 경우 NSUserDefaults를 사용하는 것이 좋습니다. 따라서 응용 프로그램이 처음 실행되면 번들에있는 해당 파일 (Money.text)에서 읽을 수 있습니다 (그렇게 할 수 있으면 번들에 보관하지 않아도됩니다). 그것을 읽는 대신에 그것을 작성 후이 같은 NSUserDefaults에 전체 텍스트를 저장 :

[[NSUserDefaults standardUserDefaults] setObject: holdString forKey: @"money" ]; // By convention you should name it holdString instead of HoldString. 

데이터를 읽으려면 : 많은 것들을 설명 할 수

NSString* moneyStr= [[NSUserDefaults standardUserDefaults] objectForKey: @"money"]; 
관련 문제