swift 如何将NSNumber数组转换为Int数组?

yrdbyhpb  于 2023-06-04  发布在  Swift
关注(0)|答案(2)|浏览(356)

如何在Swift中从NSNumber中获取Int值?或者将NSNumber数组转换为Int值数组?
我有一个NSNumber列表

let array1:[NSNumber]

我想要一个这个数组的Int值列表

let array2:[Int] = Convert array1
irlmq6kh

irlmq6kh1#

如果集合中有非整数元素,则它取决于预期的结果。

let array1: [NSNumber] = [1, 2.5, 3]

如果希望仅在所有元素都是整数时才保留集合

let array2 = array1 as? [Int] ?? []           //  [] all or nothing

如果只想从集合中获取整数

let array3 = array1.compactMap { $0 as? Int } //  [1, 3] only integers

如果你想要所有元素的整体值

let array4 = array1.map(\.intValue)           //  [1, 2, 3] whole values
eqqqjvef

eqqqjvef2#

我用一行代码解决了这个问题:

let array1 : [NSNumber] = [1, 2.5, 3]

  let array2 =  array1.compactMap {Int(truncating: $0)}

  let array3 =  array1.compactMap(Int.init)

它返回一个Int值数组。

Result of array2 = [1,2,3]
Result of array3 = [1,3]

相关问题