Properties 为什么可以';我不能对字符串使用write(toFile:)属性吗?

Properties 为什么可以';我不能对字符串使用write(toFile:)属性吗?,properties,swift3,writetofile,Properties,Swift3,Writetofile,我正在学习一个用Swift早期版本编写的教程,它教我如何在Swift3中读/写.txt文件。到目前为止,Xcode在让我知道何时使用旧语法方面做得很好,并为我将其更改为最新语法。然而,我遇到了一些在旧版本的Swift中工作的东西,但不是当前版本 class ViewController: UIViewController { // MARK: Properties @IBOutlet weak var monthToEditTextField: UITextField!

我正在学习一个用Swift早期版本编写的教程,它教我如何在Swift3中读/写.txt文件。到目前为止,Xcode在让我知道何时使用旧语法方面做得很好,并为我将其更改为最新语法。然而,我遇到了一些在旧版本的Swift中工作的东西,但不是当前版本

class ViewController: UIViewController {

    // MARK: Properties

    @IBOutlet weak var monthToEditTextField: UITextField!
    @IBOutlet weak var bedTimeTextField: UITextField!
    @IBOutlet weak var wakeTimeTextField: UITextField!
    @IBOutlet weak var theLabel: UILabel!

    @IBAction func saveButton(_ sender: UIButton)
    {
        var theMonth = monthToEditTextField.text
        var bedTime = bedTimeTextField.text
        var wakeTime = wakeTimeTextField.text

        var stringForTXTFile = "The user's info is: \(theMonth), \(bedTime), \(wakeTime)"

        let fileManager = FileManager.default

        if (!fileManager.fileExists(atPath: filePath))
        {
            var writeError: NSError?
            let fileToBeWritten = stringForTXTFile.write(toFile: // This is where the problem is
        }   
    }
我打字的时候

stringForTXTFile.write
我得到这个错误框


要使用“写入”属性,我需要做什么?

写入文件在Swift3中不再返回Bool。它抛出,所以只需删除
让filetobewrited=
并使用
do try catch error
处理。如果操作成功,则需要运行的任何代码都需要放在
do try
花括号内的代码下方。您还可以使用
guard
打开文本字段可选字符串。试着这样做:

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var monthToEditTextField: UITextField!
    @IBOutlet weak var bedTimeTextField: UITextField!
    @IBOutlet weak var wakeTimeTextField: UITextField!
    @IBOutlet weak var theLabel: UILabel!
    let fileURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false).appendingPathComponent("textFile.txt")
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    @IBAction func save(_ sender: UIButton) {
        guard
            let theMonth = monthToEditTextField.text,
            let bedTime = bedTimeTextField.text,
            let wakeTime = wakeTimeTextField.text
            else { return }

        let stringForTXTFile = "The user's info is: \(theMonth), \(bedTime), \(wakeTime)"
            do {
                try stringForTXTFile.write(toFile: fileURL.path, atomically: true, encoding: .utf8)
                // place code to be executed here if write was successful
            } catch {
                print(error.localizedDescription)
            }
    }

    @IBAction func load(_ sender: UIButton) {
        do {
            theLabel.text = try String(contentsOf: fileURL)
        } catch {
            print(error.localizedDescription)
        }
    }
}

谢谢你的帮助。然而,由于我遵循的是一个过时的教程,我现在意识到第二部分也不起作用(因此无法检查和查看您的代码是否有效/是否回答了我的问题)。本教程的第二部分介绍如何使用按钮和标签显示.txt文件信息。你能给我一个读取文件的方法,这样我就可以在标签上显示内容了吗?@Theodore.K你可以试试这个示例文件,它工作得很好。现在我需要学习如何将文档保存到在线URL