2011-08-29 10 views
10

Tôi không thể nhận được nsdata để ghi vào một tệp. Bất kỳ ý tưởng những gì tôi có thể làm sai. Cảm ơn trước.NSData writeToFile không hoạt động

NSString* filename = @"myfile.txt"; 

NSString *applicationDocumentsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 

NSString *storePath = [applicationDocumentsDir stringByAppendingPathComponent:filename];  

if ([fileManager fileExistsAtPath:applicationDocumentsDir]) 
    NSLog(@"applicationDocumentsDir exists"); // verifies directory exist 

NSData *data = [NSData dataWithContentsOfURL:URL]; 

if (data) {  
    NSString *content = [[NSString alloc] initWithBytes:[data bytes] 
                 length:[data length] encoding: NSUTF8StringEncoding]; 

    NSLog(@"%@", content); // verifies data was downloaded correctly 

    NSError* error; 
    [data writeToFile:storePath options:NSDataWritingAtomic error:&error]; 

    if(error != nil) 
     NSLog(@"write error %@", error); 
} 

tôi vẫn gặp lỗi

"The operation couldn’t be completed. No such file or directory" 
+6

Bạn không nên kiểm tra xem 'error' là con số không hay không - Nó có thể được khởi tạo cho bất kỳ thứ gì (trong trường hợp của bạn). Kiểm tra kết quả của 'writeToFile: options: error' để xác định thành công hay thất bại. Nếu nó trả về false (NO), chỉ sau đó bạn nên đọc lỗi. –

+0

Cảm ơn bạn đã phản hồi. Nó trả về NO. Tôi đã xóa séc để làm cho bài đăng càng ngắn càng tốt. – user346443

+0

Giá trị của biến storePath của bạn là gì trước khi bạn gọi writeToFile: options: error:? Mã của bạn có vẻ tốt, nhưng lỗi mà bạn đang gặp phải khiến tôi đặt câu hỏi ở đâu con đường đó đang trỏ tới. – Sam

Trả lời

5

Hãy thử

NSString *storePath = [applicationDocumentsDir stringByAppendingPathComponent:@"myfile.txt"]; 

if ([[NSFileManager defaultManager] fileExistsAtPath:storePath]) 
     NSLog(@"applicationDocumentsDir exists"); 
+1

Vì vậy, làm việc, kỳ lạ. Chuỗi sẽ khác gì so với biến nsstring. – user346443

+0

Nếu bạn in ra và nó có tệp: lúc đầu, đó là một URL. Tôi chỉ gặp vấn đề này, mặc dù tôi gắn bó với các hàm chuỗi. –

+0

tệpExistsAtPath trả về false. Phải làm gì? Vì nguyên nhân không tồn tại nên tệp chưa được tạo. Làm thế nào để tạo ra nó? – NikeAlive