gpt4 book ai didi

swift - 使用 NSUserDefaults : UInt8 not convertible to Int8 保存分数

转载 作者:行者123 更新时间:2023-11-28 09:16:19 25 4
gpt4 key购买 nike

我正在创建一个简单的游戏。如果玩家输了,我希望将他的当前分数与作为 NSUserDefault 保存为持久存储的最佳分数进行比较。我不断收到“UInt8 不可转换为 Int8”这是代码

scoreForComparingWithBestScore = UInt8(score)

if ( scoreForComparingWithBestScore > NSUserDefaults.standardUserDefaults().objectForKey("BestScore")){

NSUserDefaults.standardUserDefaults().objectForKey("BestScore") = scoreForComparingWithBestScore

}

即使我输入了

scoreForComparingWithBestScore = Int8(score)

错误将被切换。

提前致谢!

最佳答案

NSUserDefaults.standardUserDefaults().objectForKey("BestScore") 返回一个 AnyObject?。要将其与 UInt8(或任何其他 Swift 数值类型——你可能想重新考虑 UInt8 并使用 Int 除非有很好的理由坚持使用该类型),你需要同时打开可选的并将其转换为数字:

if let best = NSUserDefaults.standardUserDefaults().objectForKey("BestScore")?.integerValue {
// best will be an Int here, you can compare it to scoreForComparingWithBestScore
}
else {
// either there was no BestScore value, or there was but it wasn't an integer
}

或者,如果不存在(或不是整数),您可以使用 ?? 运算符将最佳分数默认为零:

let best = NSUserDefaults
.standardUserDefaults()
.objectForKey("BestScore")?
.integerValue ?? 0

关于swift - 使用 NSUserDefaults : UInt8 not convertible to Int8 保存分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27460495/

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