【问题标题】:Append some text at the end of text file in swift [duplicate]快速在文本文件末尾添加一些文本[重复]
【发布时间】:2016-08-15 06:16:46
【问题描述】:

我正在使用以下代码,但出现错误。

"无法将 NSURL 类型的值转换为 int32"

在这一行:

if let fileHandle = NSFileHandle(fileDescriptor: fileurl, closeOnDealloc: &err).

得到这个错误

这一行的“表达式类型模棱两可,没有更多上下文”

if !data.writeToURL(fileurl, options: .DataWritingAtomic, error: &err)

代码:

let dir:NSURL = NSFileManager.defaultManager().URLsForDirectory(NSSearchPathDirectory.CachesDirectory, inDomains: NSSearchPathDomainMask.UserDomainMask).last as NSURL
let fileurl =  dir.URLByAppendingPathComponent("log.txt")

let string = "\(NSDate())\n"
let data = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!

if NSFileManager.defaultManager().fileExistsAtPath(fileurl.path!) {
    var err:NSError?
    if let fileHandle = NSFileHandle(fileDescriptor: fileurl, closeOnDealloc: &err) {
        fileHandle.seekToEndOfFile()
        fileHandle.writeData(data)
        fileHandle.closeFile()
    }
    else {
        print("Can't open fileHandle \(err)")
    }
}
else {
    var err:NSError?
    if !data.writeToURL(fileurl, options: .DataWritingAtomic, error: &err) {
        print("Can't write \(err)")
    }
}

【问题讨论】:

  • 我看过那个帖子,但没有帮助我。
  • 您应该发布一个带有相关代码的新问题并解释您遇到的问题。
  • 对于第一个错误,您使用了错误的 NSFileHandle 初始化程序。你没有文件描述符,你有一个NSURL。使用 forWritingToURL 初始化器。
  • 顺便说一句 - 如果您要从 another answer 复制代码,请正确复制。
  • 我复制正确,但出现其他错误 Incorrect argument labels in call (have 'forWritingToURL:error:', expected 'fileDescriptor:closeOnDealloc:')

标签: ios swift append text-files


【解决方案1】:

您的代码对我来说看起来像 Swift 1,即便如此,它也不是有效的 Swift 1。如果您使用的是 Swift 2 或更高版本,请尝试以下操作:

let dir = NSFileManager.defaultManager().URLsForDirectory(NSSearchPathDirectory.CachesDirectory, inDomains: NSSearchPathDomainMask.UserDomainMask).last!
let fileurl = dir.URLByAppendingPathComponent("log.txt")

let string = "\(NSDate())\n"
let data = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!

if NSFileManager.defaultManager().fileExistsAtPath(fileurl.path!) {
    do {
        let fileHandle = try NSFileHandle(forWritingToURL: fileurl)

        fileHandle.seekToEndOfFile()
        fileHandle.writeData(data)
        fileHandle.closeFile()
    } catch {
        print("Can't open fileHandle \(error)")
    }
} else {
    do {
        try data.writeToURL(fileurl, options: .DataWritingAtomic)
    } catch {
        print("Can't write \(error)")
    }
}

【讨论】:

  • 这行得通。你能解释一下吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-25
  • 2014-02-24
  • 2023-04-08
  • 1970-01-01
  • 2011-04-13
  • 1970-01-01
  • 2013-04-05
相关资源
最近更新 更多