我正在使用最新的XCode / Swift 3.0并面临一些问题:
我在/ MyProject / MyProject / Assets / Subfolder1中创建了一个文件夹,并在其中存储了几百个.txt文件,使用以下代码迭代Subfolder1中的文件:
let fm = FileManager.default
fm.enumerator(atPath: "/MyProject/Assets/Subfolder1")?.forEach({ (e) in
if let e = e as? String, let url = URL(string: e) {
doSomethingWith(url.pathExtension)
}
})
但我找不到任何文件。我尝试了一些变体(" / Assets / Subfolder1 /"和" / MyProject / MyProject / Assets / Subfolder1"),都没有用。
我必须指定的正确路径是什么?
最佳克里斯
答案 0 :(得分:1)
首先,请确保已将实际文件夹添加到Xcode项目中。只需将文件夹拖放到项目中即可完成此操作。拖放后,此窗口应显示
确保选择Build Phases
和Copy Bundle Resources
。这将确保整个文件夹在Xcode项目中不断同步。然后在构建项目时验证资产是否会转移到您的设备,进入TextFiles
然后转到let fm = FileManager.default
let path = Bundle.main.resourcePath?.appending("/TextFiles")
fm.enumerator(atPath: path!)?.forEach({ (e) in
if let e = e as? String, let url = URL(string: e) {
doSomethingWith(url.pathExtension)
}
})
,您应该看到文件夹的名称,在我的情况下,我已将其命名为Bundle.main.resourcePath
。
现在因为您已将文件夹添加到应用程序的主程序包中,您可以通过执行以下操作来访问它:
/TextFiles
我们之前需要执行/TextFiles
并且不能简单地说C:/Users/Abc123/Documents/TextFiles
的原因是因为如果我们说C:/TextFiles
它会从系统根目录查找该文件夹,这就是它之前没有工作的原因。这就像在.hidden-xs/sm/md/lg
中有一个文件夹,但系统正在{{1}}中查找。