【问题标题】:Reading Text Files - Using Swift读取文本文件 - 使用 Swift
【发布时间】:2026-02-20 09:20:05
【问题描述】:

当我编译和运行时,'if' 语句出现致命错误。我错过了一条线吗?或者其他的东西。我之前得到了它,但不知道如何。

@IBOutlet weak var TextView: UITextView!
var TextFromFile = String()

override func viewDidLoad()
{
    super.viewDidLoad()
    TextView.text = TextFromFile
    let path = NSBundle.mainBundle().pathForResource("TextFile", ofType: "txt")

    if let content = String(contentsOfFile:path!, encoding: NSUTF8StringEncoding, error: nil) {

        let lines : [String] = content.componentsSeparatedByString("/n")

        TextView.text = content
    }

【问题讨论】:

  • 你的路径可能是错误的,你正在包装它。检查您的文本文件
  • 你在哪里添加了你的文本文件

标签: ios swift file text


【解决方案1】:

因为您强制展开...这意味着路径可能是 nil 并且您尝试使用 nil 值...而不是您应该使用 let 绑定之类的..

  if let path = NSBundle.mainBundle().pathForResource("TextFile", ofType: "txt"){

        if let content = String(contentsOfFile:path, encoding: NSUTF8StringEncoding, error: nil) {

            let lines : [String] = content.componentsSeparatedByString("\n")

            TextView.text = content
        }
    } 

请确保您已将文本文件 TextFile.txt 移动到您的 Xcode 项目(使用拖放操作并选中“如有必要复制文件”)

查看您的Project Targets-> Build Phases -> copy build resources ...。确保您的文件在构建资源中

【讨论】:

  • 请问@Bhavin 为什么let let 有两次?
  • 好的,它不再给我一个错误。但是没有文字显示..?
  • 代替 \n,使用 var splitTextIntolinesArray:[String] = content.componentsSeparatedByCharactersInSet(NSCharacterSet.newlineCharacterSet())
  • 您告诉我要更改的代码有一个未解析标识符at the end ())的错误
  • 它现在工作得很好,感谢您的帮助if let path = NSBundle.mainBundle().pathForResource("TextFile", ofType: "txt"){ var data = String(contentsOfFile:path, encoding: NSUTF8StringEncoding, error: nil) if let content = (data){ TextView.text = content }
【解决方案2】:

检查 在您的项目中复制 TextFile 期间,还要检查“添加到目标”,这将解决您的 nil 问题。

【讨论】:

  • “添加到目标”是什么意思?
  • 删除你的TextFile并在Xcode中拖放“如果需要的话复制文件”你会得到“添加到目标”选项。
  • 哦,是的,我做到了,显示了一些文字,但它也显示了路径...我只需要文字..
  • 好吧,至少你解决了 nil 问题..?