当我在快速失败时使用 try String(contentsOf: shareLog) 将每个字符串附加到 .txt 文件时

Posted

技术标签:

【中文标题】当我在快速失败时使用 try String(contentsOf: shareLog) 将每个字符串附加到 .txt 文件时【英文标题】:When I am appending every string to .txt file by using try String(contentsOf: shareLog) in swift failing Some times 【发布时间】:2018-03-31 15:31:53 【问题描述】:

我正在调用波纹管函数来获取 .txt 文件的内容,并且有时我会成功,但有时当我尝试获取它时会捕获块并给出波纹管错误..请帮帮我

p>

// 用于分享

func getLogData(file: String) -> String? 

    let shareLog = dir.appendingPathComponent(file, isDirectory: false)

    if fileManager.fileExists(atPath: shareLog.path) 
        do 
            let result1 = try String(contentsOf: shareLog)
            print(result1)
            return result1
         catch let error as NSError 
            print("Failed reading from file: \(error)")
            return nil
        

    

    print("Failed to get log at: \(logPath)")
    return nil

//尝试获取.txt文件内容时出错

Error Domain=NSCocoaErrorDomain Code=264 "无法打开文件“somelog-log.txt”,因为无法确定其内容的文本编码。" UserInfo=NSFilePath=/var/mobile/Containers/Data/Application/199D8E4D-6DFC-4327-BC57-06957BCC6EA3/Documents/somelog-log.txt

【问题讨论】:

【参考方案1】:

明确指定编码

let result1 = try String(contentsOf: shareLog, encoding: .utf8)

【讨论】:

谢谢你,但是当我这样做时..我得到.....错误域=NSCocoaErrorDomain Code=261“文件”2018-04-04T15/28/48-04/00 -log.txt”无法使用文本编码 Unicode (UTF-8) 打开。” UserInfo=NSFilePath=/var/mobile/Containers/Data/Application/0B8CE9C6-AAF2-41C1-9FA4-65FB57BD4B4E/Documents/2018-04-04T15:28:48-04:00-log.txt, NSStringEncoding=4 始终将文件保存为 UTF8。 我没有保存我正在通过电子邮件共享 .txt 文件。所以当我阅读文件内容时,它会因该错误而失败。 您正在从磁盘读取文件,因此有时它必须已写入磁盘。确保可以确定编码。 txt.appendLineToURL(fileURL: logPath as URL) .. extension String //第一个方法 func appendLineToURL(fileURL: URL) throws do try (self + "\n").appendToURL( fileURL: fileURL) catch let error print(error) //第二个方法 func appendToURL(fileURL: URL) throws let data = self.data(using: String.Encoding.utf8)! do try data.append(fileURL: fileURL) catch let error print(error)

以上是关于当我在快速失败时使用 try String(contentsOf: shareLog) 将每个字符串附加到 .txt 文件时的主要内容,如果未能解决你的问题,请参考以下文章

调试导致异常?

快速使用 XCTest 时不会出现编译错误

雪花存储过程从 dbt 失败

Presto 如何使用 Try_Parse

当我按下快速播放按钮时,声音播放失败

使用 try 时资源泄漏...最后?