当前位置:   iOS > 正文

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

nsfilemanager,ios,swift,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工具

这怎么可能?

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

你可以看到它应该在哪里:

在此输入图像描述

到底是怎么回事?



1> Martin R..:

(此答案中的代码已针对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


它有效,有什么区别,因为它在打印时完全相同?
@BartłomiejSemańczyk的区别是absoluteString还包括`file://`就像这样:`file:/// Users/kuna/...`,路径只返回`/ Users/kuna/...
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/iOS/detail/8049
推荐阅读
相关标签
  

闽ICP备14008679号