let myArray = Array(arrayLiteral: userIDs)
let newArray = myArray.map{$0 as! UInt}
次のエラーは何を意味しますか?Swift array.map conver NSNumber to UInt
キャスト 'セット?'関連性のない型「UINT」にいつも私が
UInt
の代わりに数字で配列にNSSet
から作成された配列を変換したい
失敗しました。
let myArray = Array(arrayLiteral: userIDs)
let newArray = myArray.map{$0 as! UInt}
次のエラーは何を意味しますか?Swift array.map conver NSNumber to UInt
キャスト 'セット?'関連性のない型「UINT」にいつも私が
UInt
の代わりに数字で配列にNSSet
から作成された配列を変換したい
失敗しました。
userIDs
場合。
let num1 = NSNumber(integer: 33)
let num2 = NSNumber(integer: 42)
let num3 = NSNumber(integer: 33)
let nums = [num1, num2, num3] // [33, 42, 33]
let userIDs = Set(nums) // {33, 42}
let myArray = Array(userIDs) // [33, 42]
は、その後、あなたが好きにマッピングすることができます:
let newArray = myArray.map{ UInt($0) }
UPDATEコメント
た後、あなたの代わりに財団のNSSetをお持ちの場合は
はarrayLiteral
のinitを削除しますスウィフトセット、これを行うことができます:
let userIDs = NSSet(array: nums)
let myArray = userIDs.map { $0 as! NSNumber }
let newArray = myArray.map { UInt($0) }
NSSetの内容はNSSetに保持されないため、NSSetの内容をNSNumberにダウンキャストする必要があります。
hmが、私はlet myArray = Array(userIDs)を使用することを許可していません、Xcodeは多分arrayLiteralを追加したいと言います。実際に私はあなたのようにセットを作成しない、私はそれがNSSet、私は違いがあるかどうかわからないポッドの目的のCファイルからそれを得る。 –
私は自分の答えを更新しました。 – Moritz
ha、私たちは 'Set from '
がNSSet
である場合、myArray
は、NSSet
の1つの要素を持ちます。あなたは、しかし、ユーザーIDを介してマップすることができます。
let userIDs: NSSet = NSSet(array: [ NSNumber(int:1), NSNumber(int:2), NSNumber(int:3) ])
let myArray = Array(arrayLiteral: userIDs)
print(myArray.count) // returns 1
print(myArray[0].dynamicType)
let newArray = userIDs.map { x -> UInt in
print(x.dynamicType)
return x as! UInt
}
for x in newArray {
print(x.dynamicType)
}
これは遊び場で得られます。Set<NSNumber>
はその後、設定内容から配列を作成しませんArray(arrayLiteral: userIDs)
やって、それがセット自体を含む配列を作成している
1
__NSSetI
__NSCFNumber
__NSCFNumber
__NSCFNumber
UInt
UInt
Uint
キャストの代わりに 'unsignedIntegerValue'メソッドを使ってみましたか? 'let newArray = myArray.map {$ 0!.unsignedIntegerValue}' – dasblinkenlight
'userIDs'とは何ですか? - 実際に 'xxxLiteral:'コンストラクタを明示的に呼び出す必要がある場合はわかりませんので、別の問題を回避するためにそれを行ったと仮定します。 –
@MartinRそれはnsnumbersのセットです –