Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift Xcode项目文件夹结构_Swift_Xcode - Fatal编程技术网

Swift Xcode项目文件夹结构

Swift Xcode项目文件夹结构,swift,xcode,Swift,Xcode,我正在使用最新的XCode/Swift 3.0,并面临一些问题: 我在/MyProject/MyProject/Assets/Subfolder1中创建了一个文件夹,并在其中存储了几百个.txt文件,以便使用以下代码迭代子文件夹1中的文件: let fm = FileManager.default fm.enumerator(atPath: "/MyProject/Assets/Subfolder1")?.forEach({ (e) in if let e = e as? String,

我正在使用最新的XCode/Swift 3.0,并面临一些问题:

我在/MyProject/MyProject/Assets/Subfolder1中创建了一个文件夹,并在其中存储了几百个.txt文件,以便使用以下代码迭代子文件夹1中的文件:

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”),但都不起作用

我必须指定的正确路径是什么?

最好的
Chris

首先,确保已将实际文件夹添加到Xcode项目中。只需将文件夹拖放到项目中即可完成此操作。拖放后,应显示此窗口

确保您选择了
创建文件夹引用
,并在需要时选择
复制项目
。这将确保整个文件夹在Xcode项目中持续同步。然后,为了验证在构建项目时资产是否会转移到您的设备,进入
构建阶段
,然后进入
复制捆绑资源
,您应该会看到文件夹的名称,在我的例子中,我将其命名为
文本文件

现在,由于您已将文件夹添加到应用程序的主捆绑包中,您可以通过执行以下操作来访问它:

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
中查找它,我重复了两次。不幸的是,这不太管用:/更新了我的答案,我在我的机器上测试了它,它是管用的。如果您有任何问题,请告诉我