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