Ta cần lưu dữ liệu vào
trong điện thoại người dùng, một chuỗi ký tự chẳng hạn, ta dùng các dòng lệnh
sau. Copy vào dưới viewDidLoad
let file = "ghi.txt"
let text = "Đây là dòng chữ ghi vào"
if let dir = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true).first {
let path = NSURL(fileURLWithPath: dir).URLByAppendingPathComponent(file)
do {
try text.writeToURL(path, atomically: false, encoding: NSUTF8StringEncoding)
}
catch {/* error handling here */}
}
Để kiểm tra xem dữ liệu đã được ghi
chưa, ta sẽ đọc file đó ra và set vào textview.
let documentsPath2 = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString
let path2 = documentsPath2.stringByAppendingPathComponent("ghi.txt")
var read : String = ""
do {
try read = NSString(contentsOfFile: path2,
encoding: NSUTF8StringEncoding) as String
gi.text = read
gi.font = UIFont.italicSystemFontOfSize(17)
gi.textColor = UIColor.blueColor()
gi.textAlignment = NSTextAlignment.Center
}
catch let error as NSError {
// print("ERROR : reading from file
\(fileName) : \(error.localizedDescription)")
}
Ta thấy dữ liệu đã ghi và
đọc thành công.
Thực tế ta hay dùng ghi
vào theo dòng, tức dữ liệu ghi sau sẽ ở dòng dưới dữ liệu ghi trước. Việc này sẽ
dễ cho khi đọc ra thành mảng lấy từng dòng để sử dụng.
Hàm sau ghi dữ liệu vào
theo dòng.
func write(content: String, _ fileName: String) {
let contentToAppend =
content+"\n"
let filePath = NSHomeDirectory() + "/Documents/" + fileName
if let fileHandle = NSFileHandle(forWritingAtPath: filePath) {
fileHandle.seekToEndOfFile()
fileHandle.writeData(contentToAppend.dataUsingEncoding(NSUTF8StringEncoding)!)
}
else {
do {
try contentToAppend.writeToFile(filePath, atomically: true, encoding: NSUTF8StringEncoding)
} catch {
print("Error creating \(filePath)")
}
}
}
No comments:
Post a Comment