gpt4 book ai didi

swift - 使用 Swift 将字符写入文件

转载 作者:搜寻专家 更新时间:2023-11-01 05:33:22 24 4
gpt4 key购买 nike

我正在尝试编写一个将单个字符写入文件的 Swift 程序。我已经对此进行了研究,但到目前为止还没有弄清楚如何执行此操作(注意,我是 Swift 的新手)。请注意,我正在读取和写入的文本文件可以包含一系列字符,每行一个。我想读取最后一个字符并更新文件,以便它只包含最后一个字符。

这是我目前所拥有的:

let will_file = "/Users/willf/Drobox/foo.txt"

do {
let statusStr = try String(contentsOfFile: will_file, encoding: .utf8)
// find the last character in the string
var strIndex = statusStr.index(statusStr.endIndex, offsetBy: -1)

if statusStr[strIndex] == "\n" {
// I need to access the character just before the last \n
strIndex = statusStr.index(statusStr.endIndex, offsetBy: -2)
}

if statusStr[strIndex] == "y" {
print("yes")
} else if statusStr[strIndex] == "n" {
print("no")
} else {
// XXX deal with error here
print("The char isn't y or n")
}

// writing

// I get a "cannot invoke 'write with an arg list of type (to: String)
try statusStr[strIndex].write(to: will_file)
}

关于如何编写 statusStr[strIndex] 返回的字符的建议,我将不胜感激。

我会进一步指出,我已阅读此 Read and write a String from text file但我仍然对如何写入我的 Dropbox 文件夹下的文本文件感到困惑。我希望有一个 write 方法可以将绝对路径作为字符串参数,但我没有找到任何文档或代码示例来说明如何在 Xcode 9.2 中编译。我还尝试了以下无法编译的代码:

let dir = FileManager.default.urls(for: .userDirectory, in: .userDomainMask).first
let fileURL = dir?.appendingPathComponent("willf/Dropbox/foo.txt")

// The compiler complains about extra argument 'atomically' in call
try statusStr[strIndex].write(to: fileURL, atomically: false, encoding: .utf8)

最佳答案

多亏了关于堆栈溢出的几个答案,我已经弄清楚了如何将字符作为字符串写入文件。关键是将字符类型强制转换为字符串类型,因为字符串对象支持我要使用的write方法。请注意,我使用了 Read and write a String from text file 中的两个答案。在Swift Converting Character to String提出解决方案。这是 Swift 代码:

import Cocoa

let will_file = "/Users/willf/Dropbox/foo.txt"

do {
// Read data from will_file into String object
let statusStr = try String(contentsOfFile: will_file, encoding: .utf8)
// find the last character in the string
var strIndex = statusStr.index(statusStr.endIndex, offsetBy: -1)

if statusStr[strIndex] == "\n" {
// I need to access the character just before the last \n
strIndex = statusStr.index(statusStr.endIndex, offsetBy: -2)
}

if statusStr[strIndex] != "n" && statusStr[strIndex] != "y" {
// XXX deal with error here
print("The char isn't y or n")
}

// Update file so it contains only the last status char
do {
// String(statusStr[strIndex]) coerces the statusStr[strIndex] character to a string for writing
try String(statusStr[strIndex]).write(toFile: will_file, atomically: false, encoding: .utf8)
} catch {
print("There was a write error")
}
} catch {
print("there is an error!")
}

关于swift - 使用 Swift 将字符写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48978911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com