NSUserDefaults在视图之间被擦除

时间:2015-12-08 19:56:37

标签: ios swift nsuserdefaults


我按下按钮时设置NSUserDefaults值,但是当视图转换时,值未设置,并返回任何值。
代码:
按钮代码

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:

1 个答案:

答案 0 :(得分:0)

我已使用您的代码进行了测试,但未发现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 中存在这个问题。你应该检查这个行代码:

$Path = "C:\SoftwareDevelopment\SourceCode\subversion\branches\"
$Text = "\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b"
$PathArray = @()
$Results = "C:\temp\IPV4SearchResults.txt"

$foundfiles = Get-ChildItem $Path -Filter "*.config*" -recurse | Where-Object { $_.Attributes -ne "Directory"} 

$foundfiles | % { 
     If (Get-Content $_.FullName | Select-String -Pattern $Text) {
        $PathArray += $_.FullName
     }
 }
$Patharray > $results