ios - NSFileManager.defaultManager(). fileExistsAtPath بإرجاع false بدلاً من true




swift (2)

إذا كنت تريد التحقق من وجود مسار ، يجب عليك التحقق من المسار

let url = NSURL(string: "balabala")

let path = url?.path
//Check path

كيف يكون ذلك ممكنا؟

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

ويمكنك أن ترى أنه هناك حيث ينبغي أن يكون:

ما الذي يجري؟


(تم تحديث الكود في هذه الإجابة لـ Swift 3 والإصدارات الأحدث.)

من الواضح أن متغير path الخاص بك هو NSURL (يصف مسار الملف). للحصول على المسار كسلسلة ، استخدم خاصية path ، وليس absoluteString :

let exists = FileManager.default.fileExists(atPath: path.path)

إرجاع absoluteString URL بتنسيق سلسلة ، بما في ذلك file: مخطط إلخ.

مثال:

let url = URL(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




nsfilemanager