当按下按钮时,我设置了一个 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/