मेरे आवेदन में, मैंने उपयोगकर्ता को ध्वनि क्लिप रिकॉर्ड करने दिया और बाद में, यदि उपयोगकर्ता चुनता है, तो मैं चाहता हूं कि वह इसे हटा सके।आईफोन/उद्देश्य सी: फ़ाइल को हटा नहीं सकता
इस कोड मैं का उपयोग करें:
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSLog(@"File exists: %d", [fileManager fileExistsAtPath:path]);
NSLog(@"Is deletable file at path: %d", [fileManager isDeletableFileAtPath:path]);
[fileManager removeItemAtPath:path error:&error];
if (error != nil)
{
NSLog(@"Error: %@", error);
NSLog(@"Path to file: %@", path);
}
समस्या यह है कि fileExistsAtPath
और isDeletableFileAtPath
वापसी बातिल और removeItemAtPath
काम नहीं करता है, और इस त्रुटि फेंकता है,
Error: Error Domain=NSCocoaErrorDomain Code=4 UserInfo=0x391b7f0 "Operation could not be completed. (Cocoa error 4.)"
मार्ग होता है यह फॉर्म:
/Users/andrei/Library/Application%20Support/iPhone%20Simulator/User/Applications/5472B318-FA57-4F8D-AD91-7E06E9609215/Documents/1280913694.caf
वहां एक फ़ाइल है जिसे 1280913694.caf
कहा जाता है, लेकिन यह इसे नहीं उठाता है। क्या पथ के प्रतिनिधित्व के तरीके के साथ ऐसा कुछ करना है?
पथ AVAudioPlayer
के साथ ऑडियो फ़ाइल चलाते समय काम करता है।
मैं भी fileExistsAtPath
और isDeletableFileAtPath
के लिए %d
को %@
बदल दिया है और जवाब 0 है, जो मुझे लगता है कि गलत मतलब है।
फ़ाइल का नाम एक डेटाबेस में संग्रहीत है, और फ़ाइल का पथ इस विधि के साथ लिया गया है:
-(NSString *)returnFullPathToDirectory
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
return documentsDirectory;
}
के बाद मैं इस मूल्य मिलता है, मैं इसे निम्नलिखित कोड में उपयोग
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:fileName];
कृपया '-removeItemAtPath' से'% d' से पहले दो '% @' को बदलें और फिर से चलाएं। – kennytm
ध्यान दें कि फ़ाइल: // उपसर्ग को हटाया जाना चाहिए, यानी NSURL में कनवर्ट करें और .path विशेषता प्राप्त करें (जैसा कि वास्तव में पथ ऊपर है) – ThomasRS