将 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)")