0

我对 Swift 2.0 非常陌生,并且非常卡在这里......我已经创建了一个基于用户设置范围的随机数生成器,用于下限和上限。当我尝试将 NSUserDefaults 中的低/高范围存储为整数时,当我可以将低和高的变量设置为 Uint32 时,此函数与我的测试函数配合得很好。现在,当我尝试加载用户为低和高设置的值以在下面的函数中使用时,它会给我一个错误,即它需要是 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
4

2 回答 2

1

对于任何想知道的人...感谢亚当,我们有一个答案...这是分解我如何使用他的建议使这件事起作用的代码:)

//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)")
于 2015-09-15T20:15:08.407 回答
0

使用此代码(为 swift 3 更新):

    let number : UInt32 = 8

    UserDefaults.standard.set(NSNumber(value: number), forKey: "key")

    let number2 = (UserDefaults.standard.value(forKey: "key") as? NSNumber)?.uint32Value
于 2015-09-15T15:26:37.770 回答