0

私はSwift 2.0を初めて使用し、ここでかなり行き詰まっています...ユーザーが設定した下限と上限の範囲に基づいて乱数ジェネレーターを作成しました。低域と高域の変数を Uint32 に設定できたとき、この関数は私のテスト関数でうまく機能しました。以下の関数で使用する低値と高値に対してユーザーが設定した値を読み込もうとすると、UInt32 値である必要があるというエラーが表示されます。

問題は....それらをそのタイプとして NSUser に保存する方法がわからないようです。または、UserDefaults から出てくるタイプとしてアンラップします。

具体的なエラー メッセージは... ERROR IS Binary Operator + cannot be applied to operands of type UInt32 and 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

疑問に思っている人のために...Adamのおかげで答えがあります...これは、私が彼の提案を使用してこのことを機能させる方法を分解したコードです:)

//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 に答える