Ios NSFileManager.defaultManager().fileExistsAtPath返回false而不是true

Ios NSFileManager.defaultManager().fileExistsAtPath返回false而不是true,ios,swift,nsfilemanager,Ios,Swift,Nsfilemanager,怎么可能呢 let exists = NSFileManager.defaultManager().fileExistsAtPath(path.absoluteString) print("exists: \(exists)") //false 这是路径。绝对字符串 //file:///Users/kuna/Library/Developer/CoreSimulator/Devices/92BD140D-5C14-43C4-80D6-904BB9594ED6/data/Containers/D

怎么可能呢

let exists = NSFileManager.defaultManager().fileExistsAtPath(path.absoluteString)
print("exists: \(exists)") //false
这是路径。绝对字符串

//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
(描述文件路径)。获取路径作为 字符串,请使用
路径
属性,而不是
绝对字符串

let exists = FileManager.default.fileExists(atPath: path.path)
absoluteString
以字符串格式返回URL,包括
文件:
方案等

例如:

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
(此答案中的代码已针对Swift 3及更高版本进行了更新。)

显然,您的
path
变量是一个
NSURL
(描述文件路径)。获取路径作为 字符串,请使用
路径
属性,而不是
绝对字符串

let exists = FileManager.default.fileExists(atPath: path.path)
absoluteString
以字符串格式返回URL,包括
文件:
方案等

例如:

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

如果要检查路径是否存在,应检查路径

let url = NSURL(string: "balabala")

let path = url?.path
//Check path

如果要检查路径是否存在,应检查路径

let url = NSURL(string: "balabala")

let path = url?.path
//Check path

能否打印文档目录func printDocument(){let pathToFile=NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.CachesDirectory.UserDomainMask,true)[0]是否为namesOfFile{print]中的名称打印{let namesOfFile=try Manager.contentsoDirectoryAtPath(pathToFile)(“name:(name)”)}}catch let error as NSError{print(“print:(error)”)}}因此显然该文件不存在。如何保存它可以打印文档目录func printDocument(){let pathToFile=nsSearchPathForDirectories indomains吗(NSSearchPathDirectory.CachesDirectory、.UserDomainMask,true)[0]do{let namesofile=try Manager.contentsOfDirectoryAtPath(pathToFile)作为namesofile中的名称{print(“name:(name)”)}}捕获let错误为NSError{print(“print:(error)”)}显然文件不存在。你如何保存它?它工作了,有什么区别?因为我打印它时它是完全相同的?@Bartłomiejsemanńczyk区别是绝对的。字符串还包括
文件://
像这样:
file:///Users/kuna/...
,path只返回
/Users/kuna/…
它工作了,d是什么不同之处在于打印时完全相同?@Bartłomiejsemanńczyk不同之处在于绝对字符串还包括
文件://
如下:
file:///Users/kuna/...
,path只返回
/Users/kuna/…
这是正确的答案,您得到了+1,但您应该更清楚。如果(FileManager.default.fileExists(atPath:url?.path.path))这是正确的答案,您得到了+1,但您应该更清楚。if(FileManager.default.fileExists(atPath:url?.path.path))