“永远不会使用不可变值的初始化”但实际上是使用的

时间:2016-06-12 21:11:15

标签: swift2 xcode7

我一直没有使用这个值的错误。我理解这个错误经常弹出Swift 2.2,这是因为没有使用初始化的值。但是,我确实使用了这个值,并且这个错误在我使用的错误上弹出了3次,我不知道为什么我仍然会得到它。

以下是代码。 “难度”是编译器说不使用的变量,但正如您从我的代码中看到的那样,它实际上已被使用。有人知道为什么会这样吗?

class SettingsController: UIViewController {

// MARK: Properties

// Preferences for difficulty level of questions
let preferences = NSUserDefaults.standardUserDefaults()
let difficultyKey = "Difficulty"
let questionnumKey = "QuestionNum"
var difficulty: String = "EASY"


@IBOutlet weak var Easy: DLRadioButton!
@IBOutlet weak var Medium: DLRadioButton!
@IBOutlet weak var Hard: DLRadioButton!



override func viewDidLoad() {
    super.viewDidLoad()

    readUserDefaults()
    setDifficulty()

}

func readUserDefaults(){
    let difficulty = preferences.stringForKey(difficultyKey) // <--Error

}

func setDifficulty(){
    if difficulty == "HARD"{
        Hard.selected = true
    }
    else if difficulty == "MEDIUM"{
        Medium.selected = true
    }
    else{
        Easy.selected = true
    }

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

1 个答案:

答案 0 :(得分:0)

readUserDefaults()中,它应该是

difficulty = preferences.stringForKey(difficultyKey)

您需要删除let:您之前已经创建了difficulty变量。

您还需要使用??,&#34; nil合并运算符&#34;:preferences.stringForKey(difficultyKey) ?? "EASY",例如,即使方法调用返回nil,也要给出一个值。

注:@ eric-d和@ leo-dabus的评论作出回答。