ios - NSUserDefaults 在 View 之间被删除

标签 ios swift nsuserdefaults


当按下按钮时,我设置了一个 NSUserDefaults 值,但是当 View 转换时,该值被取消设置,并且什么也没有返回。
代码:
按钮代码

func chooseFriend(sender: UIButton) {
        let requestIndex = sender.tag
        let friendChosen = self.friends.objectAtIndex(requestIndex) as! String
        NSUserDefaults.standardUserDefaults().setObject(friendChosen, forKey: "usernameToMessageWith")
        NSUserDefaults.standardUserDefaults().synchronize()
        print(">>\(NSUserDefaults.standardUserDefaults().stringForKey("usernameToMessageWith")! as String)")
        self.performSegueWithIdentifier("toChat", sender: self)
    }

下一个查看代码

override func viewDidLoad() {
        super.viewDidLoad()
        print("TRANSITIONED")
        let receivedUsername = NSUserDefaults.standardUserDefaults().stringForKey("usernameToMessageWith")! as String
        print("RECEIVED USERNAME:\(receivedUsername)")
        refreshTable()
        let swipe: UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: "dismissKeyboard")
        swipe.direction = UISwipeGestureRecognizerDirection.Down
        self.view.addGestureRecognizer(swipe)
        NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name: UIKeyboardWillShowNotification, object: nil)
        NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name: UIKeyboardWillHideNotification, object: nil)
        testLabel.text = ""
        self.messages.addObject("Loading......")
    }

输出:

TRANSITIONED
RECEIVED USERNAME:

最佳答案

我已经使用您的代码进行了测试,没有发现 NSUserDefaults 存在问题

NSUserDefaults.standardUserDefaults().setObject("Vien", forKey: "usernameToMessageWith")
    NSUserDefaults.standardUserDefaults().synchronize()

和:

let receivedUsername = NSUserDefaults.standardUserDefaults().stringForKey("usernameToMessageWith")! as String
    print("RECEIVED USERNAME:\(receivedUsername)")

和日志:

RECEIVED USERNAME:Vien

所以我认为这个问题出在你的chooseFriend上。您应该检查此行代码:

let friendChosen = self.friends.objectAtIndex(requestIndex) as! String

关于ios - NSUserDefaults 在 View 之间被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34164885/

相关文章:

ios - 调用 awakeFromNib 时,UserDefaults 返回 0 个元素

ios - 如何在自定义 UISlider 中在 slider 值 0 之前和 slider 值 100 之后提供填充

ios - 我如何知道什么时候已将某些内容粘贴到 UIWebView 中?

ios - 打开图像 - 无法识别的选择器

ios - 构建谓词 (NSExpression) 以确定 Mapbox SymbolStyle 图层的图标颜色

swift - 缓慢的 while 循环。 swift

swift - 以编程方式将 "+"按钮添加到 UIToolbar

ios - 声明 IBOutlet 时使用类型别名

ios - 无法检索保存的自定义 Swift 对象数组

objective-c - 为什么 Xcode 中出现这些错误意味着什么?