NSUserDefaults保存值,但在完全重新运行应用程序Swift后不显示值

时间:2016-05-25 09:03:25

标签: ios swift swift2 nsuserdefaults

我将(u,i)的值附加到我最喜欢的另一个班级的按钮上。我在NSUserDefaults中保存(你,我)并成功检索值但是当我完全应用并再次运行时,(你,我)没有显示任何值? 任何人都可以告诉我如何解决这个问题。或者任何人都可以在我的project.中修复它 谢谢

import UIKit
var u : [NSString] = []
var i : [NSString] = []
class FavoriteTvViewController: UIViewController , UICollectionViewDelegate{
    var uV : NSArray = []
    var iV : NSArray = []

    @IBOutlet weak var collectionView: UICollectionView!


    let reuseIdentifier = "cell"

    override func viewDidLoad(){
    }

    override func viewWillAppear(animated: Bool) {
        collectionView.reloadData()
        NSUserDefaults.standardUserDefaults().setObject(u, forKey: "u")
        NSUserDefaults.standardUserDefaults().setObject(i, forKey: "i")
        NSUserDefaults.standardUserDefaults().synchronize()

        uV = NSUserDefaults.standardUserDefaults().arrayForKey("u") as! NSArray
        iV = NSUserDefaults.standardUserDefaults().arrayForKey("i") as! NSArray

        print("uV values.. \(uV)")
        print("iV values.. \(iV)")
    }

    func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
    {
        return uV.count
    }

    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> FavoriteTvCollectionViewCell
    {
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! FavoriteTvCollectionViewCell

        cell.imageView.image = UIImage(named: iV[indexPath.row] as! String)
        return cell
    }


}

1 个答案:

答案 0 :(得分:2)

您的代码如何运作:

  • 声明你并指定给它[](空数组)

  • 设置NSUserDefault u(空数组)

  • 检索NSUserDefault的值

问题是:每次启动应用程序时,在获取NSUserDefault中的值之前保存一个空数组