ios - 快速在文本文件末尾 append 一些文本

标签 ios swift append text-files

<分区>

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

"can not convert value of type NSURL to int32"

在这一行:

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

出现这个错误

"type of expression ambiguous without more context" at this line

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)")
    }
}

最佳答案

你的代码对我来说看起来像 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)")
    }
}

关于ios - 快速在文本文件末尾 append 一些文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36779882/

相关文章:

ios - UITapGestureRecognizer - 检测双击或三次点击?

swift/解析 : how to get most recent item that has data filled in?

ios - SwiftUI - 在转换期间更新目标 View

swift - 在 Swift 中将文本或数据 append 到文本文件

ios - 将数据 append 到 Swift 3 中的 txt 文件

Python 相当于在 Matlab 中分配给一个数组(在 for 循环内)

ios - 联系人框架在读取 imageData 时引发异常

ios - didUpdateLocations 没有被调用 swift 3

ios - TableView 单元格仅在滚动一次后显示实际数据

ios - 仅触摸 Swift3 中 SKSpriteNode 的非透明像素