我對於快速開發來說是全新的。我想實現一個UI表視圖,它可能顯示陣列我的項目清單如下圖如何在編輯模式下重新排序數據後保存更改
它工作正常,但是當我移動項目的地方,然後我觸摸完成按鈕,重新啓動後該應用程序,我所做的每一個更改,重置爲默認值。我搜索了很多,我發現我應該將其保存在用戶默認值。我閱讀了很多文章,但仍然不知道該怎麼處理代碼,我很欣賞,如果有人能夠按照我需要的方式編輯我的代碼 (重新排序更改可以節省設備,並且每次打開應用程序時都不會刷新)
,這裏是我的viewController中的代碼
// ViewController.swift
// Created by Sebastian Hette on 28.02.2017.
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var array = ["one", "two", "three", "four", "five"]
let defaults = UserDefaults.standard
//I defined user defaults here
struct Constants {
static let myKey = "myKey"
}
//I defined my static key here
@IBOutlet weak var myTableView: UITableView!
@IBOutlet weak var editButton: UIBarButtonItem!
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return array.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
defaults.stringArray(forKey: Constants.myKey)
//I retrieve user defaults here
cell?.textLabel?.text = array[indexPath.row]
return cell!
}
//Allows reordering of cells
func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool
{
return true
}
func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath)
{
let item = array[sourceIndexPath.row]
array.remove(at: sourceIndexPath.row)
array.insert(item, at: destinationIndexPath.row)
}
@IBAction func edit(_ sender: Any)
{
myTableView.isEditing = !myTableView.isEditing
switch myTableView.isEditing {
case true:
editButton.title = "done"
case false:
editButton.title = "edit"
}
defaults.set(array, forKey: Constants.myKey)
//I saved my user defaults here
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
如果您在下次重新啓動應用程序時未以用戶默認值保存更新的數組,則「數組」會在viewController中重新初始化。你必須從用戶默認值中獲取數組。 – AshokPolu
@AshokPolu非常感謝你。我對swift完全陌生,我花了很多精力去找到我應該做的事情,但我找不到。我會很感激,如果你可以更新確切的代碼保存和讀取數組在用戶默認 –