2015-12-07 5 views
22

के बजाय झूठी रिटर्न देता है यह कैसे संभव है?NSFileManager.defaultManager()। FileExistsAtPath सही

let exists = NSFileManager.defaultManager().fileExistsAtPath(path.absoluteString) 
print("exists: \(exists)") //false 

यह path.absoluteString

//file:///Users/kuna/Library/Developer/CoreSimulator/Devices/92BD140D-5C14-43C4-80D6-904BB9594ED6/data/Containers/Data/Application/5B818832-BB19-4047-A7F8-1487F36868D6/Documents/wishlists/68/147/128/IMG_0006.PNG 

है और आप देख सकते हैं यह नहीं है जहां यह होना चाहिए:

enter image description here

क्या चल रहा है?

+0

आप दस्तावेज़ निर्देशिका समारोह PrintDocument मुद्रित कर सकते हैं() { pathToFile = NSSearchPathForDirectoriesInDomains (NSSearchPathDirectory.CachesDirectory, .UserDomainMask, सच) [0] करना {जाने namesOfFile = नाम के लिए कोशिश Manager.contentsOfDirectoryAtPath (pathToFile) जाने namesOfFile में { प्रिंट ("नाम: \ (नाम)") }: } } – kholl

+0

तो जाहिरा तौर पर फ़ाइल मौजूद नहीं है } पकड़ त्रुटि NSError { प्रिंट ("\ (त्रुटि) प्रिंट") के रूप में करते हैं। आप इसे कैसे सहेजते हैं – kholl

उत्तर

48

स्पष्ट रूप से आपके path चर NSURL (फ़ाइल पथ का वर्णन) है। के रूप में पथ एक स्ट्रिंग पाने के लिए, path संपत्ति, नहीं absoluteString का उपयोग करें:

if let filePath = path.path { 
    let exists = NSFileManager.defaultManager().fileExists(atPath: filePath) 
} 

absoluteString file: योजना सहित एक स्ट्रिंग प्रारूप में URL मिलता है, आदि

उदाहरण:

let url = NSURL(fileURLWithPath: "/path/to/foo.txt") 

// This is what you did: 
print(url.absoluteString) 
// Output: file:///path/to/foo.txt 

// This is what you want: 
print(url.path!) 
// Output: /path/to/foo.txt 
+2

यह काम करता है, क्या अंतर है क्योंकि जब मैं इसे प्रिंट करता हूं तो यह पूरी तरह से समान होता है? –

+1

@ BartłomiejSemańczyk अंतर पूर्ण है स्ट्रिंग में 'फ़ाइल: //' भी शामिल है: 'फ़ाइल: /// उपयोगकर्ता/कुना/...', पथ सिर्फ '/ उपयोगकर्ता/कुना/...' – BigHeadCreations

2

यदि आप जांचना चाहते हैं कि कोई पथ मौजूद है, तो आपको पथ

देखना चाहिए
let url = NSURL(string: "balabala") 

let path = url?.path 
//Check path 
+0

देता है सही उत्तर और आपको +1 मिला लेकिन आपको और स्पष्ट होना चाहिए। अगर (FileManager.default.fileExists (atPath: url? .path.path)) –