2015-09-18 8 views
24

साथ NSFileManager.createDirectoryAtPath बनाना, हम ऐसाiOS9 स्विफ्ट फ़ाइल iOS9 पहले NSURL

let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! String 
let logsPath = documentsPath.stringByAppendingPathComponent("logs") 
let errorPointer = NSErrorPointer() 
NSFileManager.defaultManager().createDirectoryAtPath(logsPath, withIntermediateDirectories: true, attributes: nil, error: errorPointer) 

की तरह एक निर्देशिका बनाया था लेकिन iOS9 साथ वे String.stringByAppendingPathComponent हटा दिया। ऑटो कन्वर्ट टूल ने NSRL के साथ स्ट्रिंग के हमारे उपयोग को बदल दिया। createDirectoryAtPath() एक स्ट्रिंग लेता है इसलिए मुझे NSRL को स्ट्रिंग में कनवर्ट करने की आवश्यकता है। (IOS9 के लिए अद्यतन)

let documentsPath = NSURL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]) 
let logsPath = documentsPath.URLByAppendingPathComponent("logs") 
do { 
    try NSFileManager.defaultManager().createDirectoryAtPath(logsPath.absoluteString, withIntermediateDirectories: true, attributes: nil) 
} catch let error as NSError { 
    NSLog("Unable to create directory \(error.debugDescription)") 
} 

लेकिन मैं निम्नलिखित त्रुटि हो रही है:: हम तो जैसे absolutePath इस्तेमाल किया

Unable to create directory Error Domain=NSCocoaErrorDomain Code=513 "You don’t have permission to save the file “logs” in the folder “Documents”." UserInfo={NSFilePath=file:///var/mobile/Containers/Data/Application/F2EF2D4F-94AF-4BF2-AF9E-D0ECBC8637E7/Documents/logs/, NSUnderlyingError=0x15664d070 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}}

उत्तर

69

मैं इस एक पता लगा। createDirectoryAtPath() "फ़ाइल: //" उपसर्ग के साथ पथ को संसाधित करने में असमर्थ है। उपसर्ग के बिना पथ प्राप्त करने के लिए आपको पथ() या सापेक्षपाथ() का उपयोग करना होगा।

let documentsPath = NSURL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]) 
let logsPath = documentsPath.URLByAppendingPathComponent("logs") 
do { 
    try NSFileManager.defaultManager().createDirectoryAtPath(logsPath.path!, withIntermediateDirectories: true, attributes: nil) 
} catch let error as NSError { 
    NSLog("Unable to create directory \(error.debugDescription)") 
} 

गलत पथ (नोटिस फ़ाइल: //):

file: /// var/मोबाइल/कंटेनर/डेटा/आवेदन/F2EF2D4F-94AF-4BF2-AF9E-D0ECBC8637E7/दस्तावेज़/लॉग/

सही पथ:

/var/मोबाइल/कंटेनर/डेटा/आवेदन/F2EF2D4F-94AF-4BF2-AF9E-D0ECBC8637E7/दस्तावेज़/लॉग/

+2

आईओएस 9.2 – Roger

+0

** में काम करता है ** रिश्तेदार ** विजेता है। मेरे पास .absoluteString था लेकिन ऐसा लगता है कि पुराना होने के बाद से लंबा है। –

10

स्विफ्ट 3

let documentsPath = NSURL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]) 
let logsPath = documentsPath.appendingPathComponent("logs") 
do { 
    try FileManager.default.createDirectory(at: logsPath!, withIntermediateDirectories: true, attributes: nil) 
} catch let error as NSError { 
    NSLog("Unable to create directory \(error.debugDescription)") 
} 
संबंधित मुद्दे