将 UInt32 值保存到 NSUserDefaults (Swift 2.0) 错误
Saving UInt32 Values Into NSUserDefaults (Swift 2.0) error
我是 Swift 2.0 的新手,我很困在这里...
我已经根据用户设置的低限和高限范围创建了一个随机数生成器。当我可以将 low 和 high 的变量设置为 Uint32 时,此函数与我的测试函数配合得很好
一旦我尝试将 low/high 范围作为整数存储在 NSUserDefaults 中。现在,当我尝试加载用户为 low 和 high 设置的值以在下面的函数中使用时,它给我一个错误,它需要是一个 UInt32 值。
问题是....我似乎无法弄清楚如何将它们保存在 NSUser 中作为那种类型。或者将其解包为来自 UserDefaults 的类型。
我的具体错误信息是...
错误是二元运算符 + 不能应用于 UInt32 和 In
类型的操作数
非常感谢你的帮助和时间,我真的很感激!你们这里太棒了!
如果您还需要我,请告诉我:)
//CREATE SAVE SETTINGS FOR LOW AND HIGH RANGE
NSUserDefaults.standardUserDefaults().integerForKey("CatLowRange")
NSUserDefaults.standardUserDefaults().integerForKey("CatHighRange")
//Variables to load in values from NSUserDefaults on load
var catLowRange = 0 //Load In Low Range From NSUser
var catHighRange = 40 //Load In High Range From NSUser
//LOAD IN VALUES TO VARIABLES FROM NSUSERDEFAULTS
catLowRange = NSUserDefaults.standardUserDefaults().integerForKey("CatLowRange")
catHighRange = NSUserDefaults.standardUserDefaults().integerForKey("CatHighRange")
**//My Function To Generate RandNumber...**
*ERROR IS Binary Operator + cannot be applied to operands of type UInt32 and Int*
randomNumber = arc4random_uniform (catHighRange - catLowRange) + catLowRange
使用此代码(针对 swift 3 更新):
let number : UInt32 = 8
UserDefaults.standard.set(NSNumber(value: number), forKey: "key")
let number2 = (UserDefaults.standard.value(forKey: "key") as? NSNumber)?.uint32Value
对于任何想知道的人...感谢亚当,我们得到了答案...这是我如何使用他的建议使这个东西工作的代码分解:)
//WORKING METHOD!?
//vars for use
let catLowRange : UInt32 = 0
let catHighRange : UInt32 = 40
var randNumGenerated : UInt32 = 0
//SAVEPOINTS (STEP 1 - save the UInt32s as int for saving)
NSUserDefaults.standardUserDefaults().setInteger(Int(catLowRange), forKey: "CatLowRange")
NSUserDefaults.standardUserDefaults().setInteger(Int(catHighRange), forKey: "CatHighRange")
//LOAD (STEP 2 - Take Int save as a UInt32 now)
let catLowRangeLoad = UInt32(NSUserDefaults.standardUserDefaults().integerForKey("CatLowRange"))
let catHighRangeLoad = UInt32(NSUserDefaults.standardUserDefaults().integerForKey("CatHighRange"))
//FUNCTION TEST
randNumGenerated = arc4random_uniform (catHighRangeLoad - catLowRangeLoad) + catLowRangeLoad
//CHECK
print ("catLowRange = \(catLowRange)")
print ("catLowRangeLoad = \(catLowRangeLoad)")
print ("catHighRange = \(catHighRange)")
print ("catHighRangeLoad = \(catHighRangeLoad)")
print ("randNumGen = \(randNumGenerated)")
我是 Swift 2.0 的新手,我很困在这里... 我已经根据用户设置的低限和高限范围创建了一个随机数生成器。当我可以将 low 和 high 的变量设置为 Uint32 时,此函数与我的测试函数配合得很好 一旦我尝试将 low/high 范围作为整数存储在 NSUserDefaults 中。现在,当我尝试加载用户为 low 和 high 设置的值以在下面的函数中使用时,它给我一个错误,它需要是一个 UInt32 值。
问题是....我似乎无法弄清楚如何将它们保存在 NSUser 中作为那种类型。或者将其解包为来自 UserDefaults 的类型。
我的具体错误信息是... 错误是二元运算符 + 不能应用于 UInt32 和 In
类型的操作数非常感谢你的帮助和时间,我真的很感激!你们这里太棒了!
如果您还需要我,请告诉我:)
//CREATE SAVE SETTINGS FOR LOW AND HIGH RANGE
NSUserDefaults.standardUserDefaults().integerForKey("CatLowRange")
NSUserDefaults.standardUserDefaults().integerForKey("CatHighRange")
//Variables to load in values from NSUserDefaults on load
var catLowRange = 0 //Load In Low Range From NSUser
var catHighRange = 40 //Load In High Range From NSUser
//LOAD IN VALUES TO VARIABLES FROM NSUSERDEFAULTS
catLowRange = NSUserDefaults.standardUserDefaults().integerForKey("CatLowRange")
catHighRange = NSUserDefaults.standardUserDefaults().integerForKey("CatHighRange")
**//My Function To Generate RandNumber...**
*ERROR IS Binary Operator + cannot be applied to operands of type UInt32 and Int*
randomNumber = arc4random_uniform (catHighRange - catLowRange) + catLowRange
使用此代码(针对 swift 3 更新):
let number : UInt32 = 8
UserDefaults.standard.set(NSNumber(value: number), forKey: "key")
let number2 = (UserDefaults.standard.value(forKey: "key") as? NSNumber)?.uint32Value
对于任何想知道的人...感谢亚当,我们得到了答案...这是我如何使用他的建议使这个东西工作的代码分解:)
//WORKING METHOD!?
//vars for use
let catLowRange : UInt32 = 0
let catHighRange : UInt32 = 40
var randNumGenerated : UInt32 = 0
//SAVEPOINTS (STEP 1 - save the UInt32s as int for saving)
NSUserDefaults.standardUserDefaults().setInteger(Int(catLowRange), forKey: "CatLowRange")
NSUserDefaults.standardUserDefaults().setInteger(Int(catHighRange), forKey: "CatHighRange")
//LOAD (STEP 2 - Take Int save as a UInt32 now)
let catLowRangeLoad = UInt32(NSUserDefaults.standardUserDefaults().integerForKey("CatLowRange"))
let catHighRangeLoad = UInt32(NSUserDefaults.standardUserDefaults().integerForKey("CatHighRange"))
//FUNCTION TEST
randNumGenerated = arc4random_uniform (catHighRangeLoad - catLowRangeLoad) + catLowRangeLoad
//CHECK
print ("catLowRange = \(catLowRange)")
print ("catLowRangeLoad = \(catLowRangeLoad)")
print ("catHighRange = \(catHighRange)")
print ("catHighRangeLoad = \(catHighRangeLoad)")
print ("randNumGen = \(randNumGenerated)")