2012-03-03 33 views
6

tôi có mã này, mà nên làm việc một cách hoàn hảo, nhưng tôi không thể udnerstand lý do tại sao nó không phải là:"Các hoạt động không thể hoàn tất (Cocoa lỗi 512.)."

+(NSString *)writeImageToFile:(UIImage *)image { 

    NSData *fullImageData = UIImageJPEGRepresentation(image, 1.0f); 


    NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Images/"]; 

    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    BOOL isDirectory = NO; 
    BOOL directoryExists = [fileManager fileExistsAtPath:path isDirectory:&isDirectory]; 
    if (directoryExists) { 
     NSLog(@"isDirectory: %d", isDirectory); 
    } else { 
     NSError *error = nil; 
     BOOL success = [fileManager createDirectoryAtPath:path withIntermediateDirectories:NO attributes:nil error:&error]; 
     if (!success) { 
      NSLog(@"Failed to create directory with error: %@", [error description]); 
     } 
    } 

    NSString *name = [NSString stringWithFormat:@"%@.jpg", [JEntry generateUuidString]]; 
    NSString *filePath = [path stringByAppendingPathComponent:name]; 
    NSError *error = nil; 
    BOOL success = [fullImageData writeToFile:filePath options:NSDataWritingAtomic error:&error]; 
    if (!success) { 
     NSLog(@"Failed to write to file with error: %@", [error description]); 
    } 

    return filePath; 
} 

Nó đã vượt qua thư mụcNgười dùng không có lỗi, nhưng khi nó được gửi đến writeToFile, nó cho tôi lỗi này:

Error Domain=NSCocoaErrorDomain Code=512 "The operation couldn’t be completed. (Cocoa error 512.)" UserInfo=0x5634ee0 {NSFilePath=/var/mobile/Applications/5E25F369-9E05-4345-A0A2-381EDB3321B8/Documents/Images/18DAE0BD-6CB4-4244-8ED1-9031393F6DAC.jpg, NSUnderlyingError=0x5625010 "The operation couldn’t be completed. Not a directory"} 

Bất kỳ ý tưởng nào về việc này có thể là?

Trả lời

8

Tôi đã có thể tạo lại lỗi của bạn khi viết tệp trước trên đường dẫn @"Documents/Images/", sau đó cố gắng viết hình ảnh bằng mã của bạn.

Tôi nghĩ có hai tình huống có thể xảy ra cho điều này:

1) Bạn đã tạo tệp đó do nhầm lẫn tại lần thực thi ứng dụng trước đó của bạn. Điều này sẽ được giải quyết nếu bạn thiết lập lại mô phỏng sử dụng menu: iOS Simulator> Reset Contents and Settings, và gỡ bỏ cài đặt các ứng dụng từ điện thoại của bạn: dài báo chí> click vào biểu tượng x.

2) Có một số mã ở một nơi khác trong ứng dụng của bạn mà tạo ra tập tin này. Nếu trường hợp này xảy ra, bạn nên tìm mã này và xóa mã đó.

+0

giải pháp đầu tiên, có vẻ như, đã đúng. Cảm ơn vì điều đó. :) – Andrew

+0

@sch: Cuối ngày, tôi biết, nhưng cảm ơn bạn cho việc này. Vấn đề của tôi là mã của tôi đã chạy tốt trên iPad nhưng không chạy trên trình mô phỏng. Đặt lại Nội dung và Cài đặt đã giải quyết được sự cố. – Robert

+1

Tôi gặp sự cố 2). Nhưng ngay từ đầu, trình biên dịch nói rằng không có kho lưu trữ liên tục. Bây giờ tôi cố gắng để thêm một cửa hàng liên tục, nó không thành công với lỗi ca cao 512 vì tôi đã có! Thật là một! – coolcool1994

3

Từ FoundationErrors.h:

NSFileWriteUnknownError = 512 

Hãy thử sử dụng withIntermediateDirectories:YES.

1

Trong trường hợp của tôi một thời gian '' trong tên thư mục (ví dụ: ~/Documents/someDir.dir/somefile) là nguyên nhân của sự cố. Tôi đã xóa ký tự vi phạm và lỗi biến mất.

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