2011-10-18 26 views
5

Ứng dụng của tôi ghi dữ liệu mã hóa thông tin người dùng/sở thích vào tệp và đọc từ tệp đó vào lần mở ứng dụng tiếp theo.iOS: Lưu vào một tệp hoạt động trên trình giả lập nhưng không có trên thiết bị

Viết một file:

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

Đọc một file:

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

này hoạt động tốt trên giả lập. Các tập tin được viết và đọc như mong đợi. Có điều gì tôi phải thiết lập để đọc/ghi tệp trên thiết bị không?

+1

Bạn đang truyền cái gì dưới dạng 'tên tệp'? – jrturton

+1

Như @jrturton nói, bạn đang viết những tập tin nào? Nếu nó không nằm trong thư mục của ứng dụng, thiết bị thực tế sẽ không cho phép nó, nhưng có lẽ trình mô phỏng sẽ làm gì? – Kevin

+0

@Kevin Tôi không thể tạo tệp của riêng mình cho ứng dụng? – dee

Trả lời

7

Tên tệp phải nằm trong thư mục tài liệu. Trình mô phỏng sẽ không có nhiều hạn chế về nơi nó có thể ghi các tệp như thiết bị.

Lấy thư mục tài liệu như sau:

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

đèo này vào chức năng của bạn ở trên và bạn cần sử dụng tốt.

Các vấn đề liên quan