2010-02-02 24 views

Trả lời

41
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents directory 

NSError *error; 
BOOL succeed = [myString writeToFile:[documentsDirectory stringByAppendingPathComponent:@"myfile.txt"] 
     atomically:YES encoding:NSUTF8StringEncoding error:&error]; 
if (!succeed){ 
    // Handle error here 
} 
+4

Không chuyển 'nil' cho đối số' error: '. Đối với một điều, đó là loại sai ('nil' là khái niệm một' id', trong khi đối số 'error:' là một 'NSError **', về cơ bản là một 'id *'); hằng số của kiểu thích hợp là 'NULL'. Quan trọng hơn, khi tuyên bố này thất bại, bạn có muốn biết tại sao không? –

+1

Tiến độ, nhưng bạn cũng không nên giả định rằng 'lỗi' là' nil' khi thông báo thành công. Kiểm tra xem thông báo có trả về 'YES' hay' NO', và chỉ kiểm tra đối tượng lỗi khi nó trả về 'NO'. Trích dẫn: http://developer.apple.com/mac/library/documentation/cocoa/conceptual/ErrorHandlingCocoa/CreateCustomizeNSError/CreateCustomizeNSError.html#//apple_ref/doc/uid/TP40001806-CH204-SW1 (thanh bên "quan trọng" đầu tiên— thừa nhận, đó là một chút xiên về nó) –

+0

Cảm ơn ý kiến ​​của bạn – Vladimir

0

bạn có thể sử dụng NSUserDefaults

Tiết kiệm:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
[prefs setObject:@"TextToSave" forKey:@"keyToLookupString"]; 

Reading:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
NSString *myString = [prefs stringForKey:@"keyToLookupString"]; 
+3

Dude, .txt tập tin – RexOnRoids

+0

Đồng ý bạn có thể, và đây là một sự thay thế hợp lệ. Không phải những gì anh ta yêu cầu nhưng nếu bạn không biết việc sử dụng các prefs dễ đến mức nào, bạn sẽ không biết sử dụng chúng. +1 –

+1

Đừng quên gọi '[prefs synchronize] 'sau khi lưu thứ gì đó vào NSUserDefaults! –

3

Something như thế này:

NSString *homeDirectory; 
homeDirectory = NSHomeDirectory(); // Get app's home directory - you could check for a folder here too. 
BOOL isWriteable = [[NSFileManager defaultManager] isWritableFileAtPath: homeDirectory]; //Check file path is writealbe 
// You can now add a file name to your path and the create the initial empty file 

[[NSFileManager defaultManager] createFileAtPath:newFilePath contents:nil attributes:nil]; 

// Then as a you have an NSString you could simple use the writeFile: method 
NSString *yourStringOfData; 
[yourStringOfData writeToFile: newFilePath atomically: YES]; 
1

Anh ấy là cách để lưu NSString vào thư mục Documents. Việc lưu các loại dữ liệu khác cũng có thể được thực hiện theo cách đó.

- (void)saveStringToDocuments:(NSString *)stringToSave { 

NSString *documentsFolder = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; 
NSString *fileName = [NSString stringWithString:@"savedString.txt"]; 

NSString *path = [documentsFolder stringByAppendingPathComponent:fileName]; 

[[NSFileManager defaultManager] createFileAtPath:path contents:[stringToSave dataUsingEncoding:NSUTF8StringEncoding] attributes:nil]; 
} 
0

Tôi đã sử dụng phương pháp này để lưu một số dữ liệu hình ảnh được mã hóa base64 vào đĩa. Khi mở tệp văn bản trên máy tính của tôi, tôi đã gặp sự cố khi đọc dữ liệu do một số ngắt dòng và trả về tự động được thêm.

Các bản sửa lỗi mã sau vấn đề này:

myString = [myString stringByReplacingOccurrencesOfString:@"\n" withString:@""]; 
myString = [myString stringByReplacingOccurrencesOfString:@"\r" withString:@""]; 

// write string to disk 
Các vấn đề liên quan