gpt4 book ai didi

ios - 创建单独的文件

转载 作者:可可西里 更新时间:2023-11-01 01:18:54 25 4
gpt4 key购买 nike

我正在寻找一种创建单独文件的方法。例如:我有一个应用程序,它具有名称、日期等形式,当我按下保存时,我想将用户该形式的所有信息保存到一个文件中。每次填写表格时,我都希望为每个用户创建一个新文件。该文件将保存在应用程序的文档目录中。文件名应来自表单的“名称”文本字段。我研究了快速创建文件的方法,但文件名始终硬编码在路径 url 中,每次填写表单时,信息都会保存在同一个文件中。我不想这样做。任何解决方案或建议表示赞赏,我似乎无法在线找到任何解决方案(仅如何创建具有硬编码文件名的文件,我已经能够做到)。

import UIKit

class FormViewController: UIViewController {

@IBOutlet weak var organdonationno: UITextField!
@IBOutlet weak var donorage: UITextField!
@IBOutlet weak var snodname: UITextField!
@IBOutlet weak var donorshospital: UITextField!
@IBOutlet weak var date: UITextField!
@IBOutlet weak var ID: UITextField!

var fileMgr: FileManager = FileManager.default
var docsDir: String?
var dataFile: String?

override func viewDidLoad() {
super.viewDidLoad()
let filemgr = FileManager.default
let dirPaths = filemgr.urls(for: .documentDirectory, in: .userDomainMask)
dataFile = dirPaths[0].appendingPathComponent("path").path
if filemgr.fileExists(atPath: dataFile!) {
let databuffer1 = filemgr.contents(atPath: dataFile!)
let databuffer2 = filemgr.contents(atPath: dataFile!)
let databuffer3 = filemgr.contents(atPath: dataFile!)
let databuffer4 = filemgr.contents(atPath: dataFile!)
let databuffer5 = filemgr.contents(atPath: dataFile!)

let datastring1 = NSString(data: databuffer1!, encoding: String.Encoding.utf8.rawValue)
let datastring2 = NSString(data: databuffer2!, encoding: String.Encoding.utf8.rawValue)
let datastring3 = NSString(data: databuffer3!, encoding: String.Encoding.utf8.rawValue)
let datastring4 = NSString(data: databuffer4!, encoding: String.Encoding.utf8.rawValue)
let datastring5 = NSString(data: databuffer5!, encoding: String.Encoding.utf8.rawValue)

organdonationno.text = datastring1 as? String
donorage.text = datastring2 as? String
snodname.text = datastring3 as? String
donorshospital.text = datastring4 as? String
date.text = datastring5 as? String
}
// Do any additional setup after loading the view.
}

@IBAction func savdata(_ sender: Any) {
let databuffer1 = (organdonationno.text)!.data(using: String.Encoding.utf8)
let databuffer2 = (donorage.text)!.data(using: String.Encoding.utf8)
let databuffer3 = (snodname.text)!.data(using: String.Encoding.utf8)
let databuffer4 = (donorshospital.text)!.data(using: String.Encoding.utf8)
let databuffer5 = (date.text)!.data(using: String.Encoding.utf8)

fileMgr.createFile(atPath: dataFile!, contents: databuffer1, attributes: nil)
fileMgr.createFile(atPath: dataFile!, contents: databuffer2, attributes: nil)
fileMgr.createFile(atPath: dataFile!, contents: databuffer3, attributes: nil)
fileMgr.createFile(atPath: dataFile!, contents: databuffer4, attributes: nil)
fileMgr.createFile(atPath: dataFile!, contents: databuffer5, attributes: nil)

}
}

最佳答案

它只保存日期,因为您正在为每个字段创建同名的文件。每次都被新文件覆盖。您创建的最后一个文件是最新的,因此只有日期仍然存在。如果您想为一个用户保存所有表单数据,您可以按以下方式进行。您需要为每个表单创建动态文件名,以便它被覆盖。

@IBAction func savdata(_ sender: Any) {

let fileName="\(organdonationno.text) + \(donorage.text) + \(snodname.text) + \(donorshospital.text) + (date.text) "

let file = "\(fileName).txt" //this is the file. we will write to and read from it

let text = fileName //just a text

if let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {

let path = dir.appendingPathComponent(file)

//writing
do {
try text.write(to: path, atomically: false, encoding: String.Encoding.utf8)
}
catch {/* error handling here */}

//reading
do {
let text2 = try String(contentsOf: path, encoding: String.Encoding.utf8)
}
catch {/* error handling here */}
}

------编辑--------

要删除 Optional word to need to force unwrap the value by put exclamation mark (!) object to need to unwrap.

 var canBeNil : String? = "shubhra"
print(canBeNil) // output Optional("shubhra")
print(canBeNil!) // output shubhra

如果您需要标题作为 organdonationno 只需编辑:

 let fileName="\(organdonationno.text)"
let text = "\(organdonationno.text) + \(donorage.text) + \(snodname.text) + \(donorshospital.text) + (date.text) "

只需确保您的文件名是唯一的,这样就不会被覆盖。

希望对您有所帮助。快乐编码!!

关于ios - 创建单独的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44844909/

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