2012-03-03 13 views
6

मैं इस कोड है, जो पूरी तरह से काम करना चाहिए है, लेकिन मैं नहीं कर सकता udnerstand कारण है कि यह नहीं है:"कार्रवाई पूर्ण नहीं किया जा सका (कोको त्रुटि 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; 
} 

यह एक त्रुटि के बिना directoryExists पारित कर दिया, लेकिन जब यह writeToFile लिए हो जाता है, यह मुझे इस त्रुटि देता है:

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"} 

कोई भी विचार क्यों यह हो सकता है?

उत्तर

8

मैं @"Documents/Images/" पथ में पहले फ़ाइल लिखते समय आपकी त्रुटि को पुन: उत्पन्न करने में सक्षम था, फिर अपने कोड का उपयोग कर छवि लिखने का प्रयास कर रहा था।

मुझे लगता है कि इस के लिए दो संभव परिदृश्य हैं:

1) आप अपने ऐप के पिछले निष्पादन पर गलती से उस फ़ाइल को बनाया। यदि आप मेनू का उपयोग कर सिम्युलेटर रीसेट करते हैं तो यह हल हो जाएगा: आईओएस सिम्युलेटर> सामग्री और सेटिंग्स रीसेट करें, और अपने डिवाइस से ऐप को अनइंस्टॉल करना: लंबे समय तक दबाएं> एक्स प्रतीक पर क्लिक करें।

2) आपके ऐप में कहीं और कुछ कोड है जो इस फ़ाइल को बनाता है। यदि ऐसा है, तो आपको यह कोड मिलना चाहिए और इसे हटा देना चाहिए।

+0

ऐसा लगता है कि पहला समाधान सही था। उसके लिए धन्यवाद। :) – Andrew

+0

@ एसएच: दिन में देर हो गई, मुझे पता है, लेकिन इसके लिए धन्यवाद। मेरा मुद्दा था कि मेरा कोड आईपैड पर ठीक चल रहा था लेकिन सिम्युलेटर पर नहीं। सामग्री रीसेट करें और सेटिंग्स समस्या हल। – Robert

+1

मुझे समस्या थी 2)। लेकिन पहली जगह में, कंपाइलर का कहना है कि कोई लगातार स्टोर नहीं है। अब मैं एक सतत स्टोर जोड़ने की कोशिश करता हूं, यह कोको त्रुटि 512 के साथ विफल रहता है क्योंकि मेरे पास पहले से ही है! क्या एक ! – coolcool1994

3

से FoundationErrors.h:

NSFileWriteUnknownError = 512 

withIntermediateDirectories:YES का उपयोग करें।

1

मेरे मामले में एक अवधि '।' निर्देशिका नाम में (उदा। ~/दस्तावेज़/someDir.dir/somefile) समस्या का कारण था। मैंने अपमानजनक चरित्र को हटा दिया और त्रुटि गायब हो गई।

संबंधित मुद्दे