gpt4 book ai didi

ios - 从 NSUserDefaults 获取值时出错

转载 作者:可可西里 更新时间:2023-11-01 02:26:54 24 4
gpt4 key购买 nike

这是代码,如果值(score)大于旧值(maxscore),我试图将数据保存在 plist 中,但我发现了一个错误...

func write() { var maxscore = NSUserDefaults.standardUserDefaults().objectForKey("chiave") as Int?

if let test = score { // ERROR
if maxscore < score {
maxscore = score
}
}
NSUserDefaults.standardUserDefaults().setObject(score, forKey: "chiave")
NSUserDefaults.standardUserDefaults().synchronize()
}

Xcode 的错误是

"bond value in a conditional binding must be optional type swift"

编辑新问题!我在游戏结束时写了 plist,我想在游戏开始时读取 plist,以在分数 labelScore 中显示 maxScore ......但我有一个新错误,我会疯狂地解决它!

    func write() {

var maxScore = NSUserDefaults.standardUserDefaults().objectForKey("chiave") as Int?
if maxScore < score {
maxScore = score
}

NSUserDefaults.standardUserDefaults().setObject(maxScore, forKey: "chiave")
NSUserDefaults.standardUserDefaults().synchronize()
}

func read() {

var maxScore = NSUserDefaults.standardUserDefaults().objectForKey("chiave") as Int?

println(maxScore) // CONSOLE RETURN -> "Optional(0)"

labelScore.text = String(maxScore) // ERROR "Could not find an overload for init that accept the supplied argument
}

最佳答案

很确定:

var maxscore = NSUserDefaults.standardUserDefaults().objectForKey("chiave") as Int?

应该是这样的:

var maxscore = NSUserDefaults.standardUserDefaults().objectForKey("chiave") as? Int

另外,score 稍后从哪里来? Swift 似乎在提示,因为它不是可选的。如果是这种情况,您可以这样做而忘记 if 语句:

if maxscore < score {
maxscore = score
}

尽管如此,这并没有多大意义,因为在那之后你没有做任何有 maxscore 的事情。我想你的意思是这样的:

if maxscore < score {
score = maxscore
}

我会再次提到这一点,不要使用 'as Int' 进行转换?使用 'as?诠释'。你不应该那样做。将您的阅读更改为:

if let score  = NSUserDefaults.standardUserDefaults().objectForKey("chiave") as? Int {
labelScore.text = "\(score)"
}

关于ios - 从 NSUserDefaults 获取值时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27568510/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com