>

안녕하세요, Userdefaults에 데이터를 저장하려고하지만이 작업을 실행할 때마다 응용 프로그램의 페이지에 이미지에 표시된 것처럼 스레드 1 : EXC_BAD_INSTRUCTION (code = EXC_I386_INVOC)이 표시됩니다.

이전에, 나는 지금 당장 얻는 것과 같은 정확한 오류를 겪었지만 지금은 이미지에서 볼 수있는 것처럼이 현재의 선에서오고있다. 앱을 시작할 때마다 데이터를 저장하기 위해이 문제를 해결하려면 어떻게해야하나요?

var highScore = 0
var bronzeStatus = 0

ViewDidLoad :

   let defaults = UserDefaults.standard
    highScore = defaults.value(forKey: "Add1High") as! NSInteger!
    bronzeStatus = defaults.value(forKey: "bronzeMed") as! NSInteger!

아래 :

       if correctNumber > highScore {
            highScore = correctNumber
            let defaults = UserDefaults.standard
            defaults.setValue(highScore, forKey: "Add1High")
            defaults.synchronize()
        }

        if highScore >= 15 {
        let defaults = UserDefaults.standard
            let bronzeAlert = UIAlertController(title: "New Medal!", message: "You earned a bronze medal!", preferredStyle: UIAlertControllerStyle.alert)
            bronzeAlert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil))
            self.present(scoreAlert, animated: true, completion: nil)
        bronzeStatus = 1
        defaults.setValue(bronzeStatus, forKey: "bronzeMed")
        defaults.synchronize()
        }

  • 답변 # 1

    사용해보십시오

    highScore =  defaults.integer(forKey: "Add1High")
    
    

    반환 된 값을 NSInteger로 변환합니다. 값이 NSNumber 인 경우 -integerValue의 결과가 리턴됩니다. 값이 NSString 인 경우 가능하면 NSInteger로 변환됩니다. 값이 없거나 정수로 변환 할 수 없으면 0이 반환됩니다. 따라서 사용자가 직접 변환 할 필요가 없습니다.

    사용 설정 중

    defaults.set(highScore, forKey: "Add1High")
    
    

  • 답변 # 2

    Swift 3.0 코드

    와이즈 비즈

    this code work parfect..

    와이즈 비즈

    var highScore = 0
     var bronzeStatus = 0
    
    

  • 답변 # 3

    이것을 사용하여 사용자 기본값의 종료 여부를 확인하십시오

    ViewDidLoad:

    조건이 있기 때문에
           correctNumber>highScore {}

    인 경우

    이 부분이 실행되거나 실행되지 않을 수 있으므로 확인해야합니다

    //set integer type data UserDefaults.standard.set(20, forKey: "Add1High") UserDefaults.standard.set(30, forKey: "bronzeMed") //Get integer type data let defaults = UserDefaults.standard highScore = defaults.integer(forKey: "Add1High") bronzeStatus = defaults.integer(forKey: "bronzeMed") print("\(highScore)\(bronzeStatus)") //2030

  • 이전 파이썬 27에서 오류
  • 다음 Google SignIn - google 로그인 - 기계적 인조 인간:클릭하면 화면이 멈춤