2016-08-10 3 views
1

"genderDefault"변수가 아직 지정되지 않은 경우에만 경고가 표시됩니다.NSUserDefault가 저장되지 않습니다.

if(genderDefault != "male" || genderDefault != "female") 
     { 
      genderAlert() 
     } 
+1

는'genderDefault' 무엇 저장한다는 것을 알게한다 그래서 마지막에 userDefaults.synchronize()을 설정해야 할 지금 무엇? 설정하면 사전처럼 취급합니다. 테스트 할 때 문자열처럼 취급합니다. 더 많은 코드를 보여줘야합니다. 또한, 당신이 원하는 경우에'와 &'를 동시에 쓸 수 없으므로'&&'를 사용하십시오. 또는! = 대신 또는 = | 대신에 ==를 사용할 수 있습니다. – Paulw11

+0

genderDefault를 어떻게 수정하겠습니까? 나는 다른 곳에서는 사용하지 않는다. @ Paulw11 – Steve

+2

나는 그것이 고장 났다고 생각하지 않는다. 나는 당신의 논리가 깨 졌다고 생각하지만, 당신은 그 코드가 보이지 않았기 때문에이 변수들이 어디서 왔는지 값을 얻지 못했을 것이다. – Paulw11

답변

4

스위프트 3

:
func genderAlert() 
    { 
     let alertController = UIAlertController(title: "Quick Question", message: "What's your gender?", preferredStyle: UIAlertControllerStyle.Alert) 
     let okAction = UIAlertAction(title: "Male", style: UIAlertActionStyle.Default) { 
     UIAlertAction in 
     NSLog("Male Pressed") 
      self.genderDefault.setValue("male", forKey: "gender") 
     } 
     let cancelAction = UIAlertAction(title: "Female", style: UIAlertActionStyle.Default) { 
     UIAlertAction in 
     NSLog("Female Pressed") 
      self.genderDefault.setValue("female", forKey: "gender") 
     } 
     alertController.addAction(okAction) 
     alertController.addAction(cancelAction) 
     self.presentViewController(alertController, animated: true, completion: nil) 
    } 

는 경고가 표시 여부를 제어하는 ​​경우 - 성명 :

이 코드는 사용자의 선택을 저장한다고 가정한다

let genderDefault = UserDefaults.standard 
genderDefault.set(value: AnyObject?, forKey: String) // SET 
genderDefault.object(forKey: String)     // GET 

스위프트 2

let genderDefault = NSUserDefaults.standardUserDefaults() 
genderDefault.setObject("female", forKey: "gender") // SET 
if let gender = genderDefault.stringForKey("gender"){ // GET 
    if((gender as! String) != "male" || (gender as! String) != "female") 
    { 
     genderAlert() 
    } 
} 
0

당신이 userDefaults 지금은

let userDefaults = NSUserDefaults.standardUserDefaults() 
userDefaults.setValue("female", forKey: "gender") 
userDefaults.synchronize() // don't forget this!!!! 
+0

당신의 문제를 해결 했는가 @Caleb – gurmandeep

+3

'.synchronize'는 더 이상 필요하지 않다. –

+0

좋아, 나는 그것을 사용하는 것을 선호한다 :) – gurmandeep