【问题标题】:Text file to Array of Strings code is working in Playground but not in Xcode project字符串数组代码的文本文件在 Playground 中有效,但在 Xcode 项目中无效
【发布时间】:2016-08-14 02:51:21
【问题描述】:

我有以下代码创建一个名为 num.txt 的文本文件的字符串数组

import Foundation
import UIKit

func linesFromResource(fileName: String) throws -> [String] {

    guard let path = NSBundle.mainBundle().pathForResource("num", ofType: "txt") else {
        throw NSError(domain: NSCocoaErrorDomain, code: NSFileNoSuchFileError, userInfo: [ NSFilePathErrorKey : fileName ])
    }
    let content = try String(contentsOfFile: path, encoding: NSUTF8StringEncoding)
    return content.componentsSeparatedByString("\n")
}

let lines = try linesFromResource("num.txt")
print(lines)

我的文件 num.txt 位于 Playground 的资源文件夹中

而且它工作正常并且能达到预期的效果,但是当我尝试在项目中做完全相同的事情时,它给了我这个错误消息:

由于项目中的某种原因,无法调用文件“num.txt”我尝试创建一个资源文件夹并将文件放在那里,但它也不起作用,我做错了什么?

【问题讨论】:

  • 你试过调试了吗?

标签: ios arrays swift xcode


【解决方案1】:

请检查num.txt 文件是否已添加到Copy Bundle Resources 中,如需检查,请前往ProjectModule->Build Phases->Copy Bundle Resources。为了获得更多想法检查图像。

【讨论】:

  • 谢谢,按照你的建议,我把它放在那里,我检查了一下,它就在那里,但我仍然遇到同样的错误
  • 尝试清理构建您的项目并删除派生数据。
  • 我做了所有这些,转到派生数据目录并删除了那里的所有内容,我还按了 cmd + shit + k 来清理它,但由于文件的某些奇怪原因,我仍然收到相同的错误没有被读取。
  • 我不明白你面临什么问题,因为这肯定会解决问题。
  • 我解决了这个问题,只是为了让您知道,由于某种原因,当我尝试为 OSX 编译命令行应用程序时,这不起作用,我尝试将其作为单一视图应用程序iOS,然后它起作用了。我只需将代码放在 viewDidLoad 中并添加一个额外的 catch do { let lines = try linesFromResource("num.txt") print(lines) } catch { print("File not found") } 现在我想知道这如何在 Swift 中的 OSX 命令行应用程序中工作?感谢您的帮助!
【解决方案2】:

我解决了这个问题,由于某种原因,当我尝试为 OSX Copying as Bundle 资源编译命令行应用程序不起作用时,我尝试将其作为 iOS 的单视图应用程序进行,然后它工作了。

通过将文件添加为复制文件而不是复制捆绑资源并选择资源作为目标,我也能够使其作为 OSX 命令行应用程序运行,我之前尝试过此操作,但并非没有先删除派生数据和 NDoc 建议的清洁建筑,所以我想这两件事一起解决了问题。

【讨论】:

    【解决方案3】:

    linesFromResource("num.txt")改成linesFromResource("num"),多出来的.txt就是问题所在。

    【讨论】:

    • 谢谢,但我听从了你的建议,但我仍然遇到同样的问题
    猜你喜欢
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多