2011-10-18 14 views
5

Moja aplikacja zapisuje zaszyfrowane dane informacji o użytkowniku/preferencjach do pliku i odczytuje z tego pliku przy następnym otwarciu aplikacji.iOS: Zapisywanie do pliku działa na emulatorze, ale nie na urządzeniu

zapisanie pliku:

- (BOOL)writeFile:(NSString *)data:(NSString *)fileName { 
    return [data writeToFile:fileName 
       atomically:YES 
        encoding:NSUTF8StringEncoding error:nil]; 
} 

Odczyt pliku:

- (NSString *)readFile:(NSString *)fileName { 
    NSData *data = [NSData dataWithContentsOfFile:fileName]; 
    NSString *str = [[[NSString alloc] initWithData:data 
             encoding:NSUTF8StringEncoding] autorelease]; 
    return str; 
} 

Działa to dobrze na emulatorze. Pliki są zapisywane i czytane zgodnie z oczekiwaniami. Czy jest coś, co muszę skonfigurować do odczytu/zapisu plików na urządzeniach?

+1

Co przekazujesz jako 'fileName'? – jrturton

+1

Jak @jrturton mówi, do jakiego pliku piszesz? Jeśli nie znajduje się w katalogu aplikacji, rzeczywiste urządzenie nie pozwoli na to, ale może działa symulator? – Kevin

+0

@Kevin Nie mogę utworzyć własnego pliku dla aplikacji? – dee

Odpowiedz

7

Nazwa pliku musi znajdować się w katalogu dokumentów. Symulator nie będzie miał tylu ograniczeń co do tego, gdzie może zapisywać pliki tak jak urządzenie.

uzyskać katalogu dokumentów, co następuje:

NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"myfilename.extension"]; 

przekazać to do swoich funkcji powyżej i powinno być w porządku.

Powiązane problemy