연락처 목록을 만들 때 UITabBarController를 사용하고 있지만 데이터를로드하기 위해 배열을 저장하려고 할 때 응용 프로그램을 다시 시작하면 데이터가없는 곳에 문제가 발생합니다. 표시됩니다. UserDefaults를 사용하여 데이터를 저장하고 앱을 다시 시작할 때 복원합니다.UserDefault에 배열을 저장하는 방법
이 코드에서 텍스트 필드의 데이터를 list라는 배열로 보냈습니다.
import UIKit
class NewContactoViewController: UIViewController {
@IBOutlet weak var input: UITextField!
@IBAction func add(_ sender: Any) {
if (input.text != "") {
list.append(input.text!)
UserDefaults.standard.set(list, forKey: "SavedValue")
input.text = ""
}
}
}
이 코드에서는 데이터를 테이블에 인쇄하고 사용자 기본값으로 저장하려고합니다.
import UIKit
var list = [String]()
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if let x = UserDefaults.standard.object(forKey: "SavedValue") as? String {
return (x.count)
}
return (0)
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "cell")
if let x = UserDefaults.standard.dictionary(forKey: "SavedValue") as? String {
cell.textLabel?.text = [x[indexPath.row]]
}
return(cell)
}
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == UITableViewCellEditingStyle.delete {
list.remove(at: indexPath.row)
myTableView.reloadData()
}
}
override func viewDidAppear(_ animated: Bool) {
myTableView.reloadData()
}
@IBOutlet weak var myTableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
}
}
NewContactoViewController에서 목록 배열을 선언하는 방법은 무엇입니까? ViewController를 어떻게 전달하는지 더 설명해주십시오. –