如何在应用关闭并显示后永久存储变量(Int)?

时间:2016-03-11 18:41:40

标签: ios swift

我正在尝试存储名为 total 的变量,该变量包含UITableView中的行数。由于用户为UITableView键入字符串,因此该变量是 listTable ,即String数组。

我的总计为total = listTable.count

ISSUE:

每次启动应用程序时,它都显示0作为使用的行数,但是一旦你转到UITableView ViewController并返回到主ViewController,它会自动将其自身更正为当前的行数。

使用的代码:

 import UIKit
    var listTable = [String]()
    var total = listTable.count
    class ViewController: UIViewController, UITextFieldDelegate {

        @IBOutlet weak var numberOfRows: UILabel!
        @IBOutlet weak var TypeToCreateRow: UITextField!
        @IBOutlet weak var AddRow: UIButton!

        override func viewDidLoad() {
            super.viewDidLoad()
            total = listTable.count

            NSUserDefaults.standardUserDefaults().setObject(total, forKey: "rows")

            let showRow =    NSUserDefaults.standardUserDefaults().objectForKey("rows")!
            numberOfRows.text = "\(showRow)"
            print(showRow)



            // Do any additional setup after loading the view, typically from a nib.
        }
 @IBAction func RowAdd(sender: UIButton) {
            listTable.append(TypeToCreateRow.text!)

            TypeToCreateRow.text = " "


           numberOfRows.text = "\(total)" }

2 个答案:

答案 0 :(得分:1)

简单如下:

[[NSUserDefaults standardUserDefaults]setObject:value forKey:@"key"];

并在以下后找到它:

NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
    [user objectForKey:@"login"]

答案 1 :(得分:0)

在阅读之前先设置对象。这就是为什么你先写0并立即阅读。

这两行没有达到任何目的。

NSUserDefaults.standardUserDefaults().setObject(total, forKey: "rows")
let showRow =    NSUserDefaults.standardUserDefaults().objectForKey("rows")!

在获得正确的值后,您需要setObject,稍后在代码中。不是一开始。

同样正如JAL所提到的,你应该使用setInteger代替对象,因为它更加优化。