我试着把一个整数拆分成单独的数字,例如3489到3 4 8 9,然后我想把这些数字放到一个整数数组中.

我已经try 过将数字放入字符串中,然后对每个数字进行迭代,但没有效果:

var number = "123456"

var array = [Int]()

for digit in number {
    array.append(digit)
}

有什么 idea 吗?

推荐答案

我们还可以扩展StringProtocol并创建计算(computed)属性:

编辑/更新:Xcode 11.5 • Swift 5.2

extension StringProtocol  {
    var digits: [Int] { compactMap(\.wholeNumberValue) }
}

let string = "123456"
let digits = string.digits // [1, 2, 3, 4, 5, 6]

extension LosslessStringConvertible {
    var string: String { .init(self) }
}

extension Numeric where Self: LosslessStringConvertible {
    var digits: [Int] { string.digits }
}

let integer = 123
let integerDigits = integer.digits // [1, 2, 3]

let double = 12.34
let doubleDigits = double.digits   // // [1, 2, 3, 4]

Swift 5中,我们现在可以使用新的Character属性wholeNumberValue

let string = "123456"

let digits = string.compactMap{ $0.wholeNumberValue } // [1, 2, 3, 4, 5, 6]

Swift相关问答推荐

如何将趋势线添加到线性图中?

什么是Swift Concurrency中任务组的正常退出

VisionOS发送通知

如何让CTFontCreateUIFontForLanguage与汉字和表情包协同工作?

在Swift中如何将NSUrl转换为本地路径URL

为什么自定义串行队列的目标是全局队列时,Swift中不会并发执行?

确定路径是否相交的有效方法

如何让飞机与 RealityKit 中的物体相撞

Swiftui 按钮依次显示一组图像

SwiftUI View .tint(_ Color) 方法不起作用

Swift - 订阅视图之外的绑定值

Swift - 如何更新多目录中的对象

我将哪种 Swift 数据类型用于货币

快速的 AES 加密

FCM 后台通知在 iOS 中不起作用

为什么我可以转换为 NSManagedObject 但不能转换为我的实体类型?

iOS/Swift:如何检测 UITextField 上的touch 动作

使用 phimagemanager 将图像保存到自定义相册?

显示 UIAlertController 的简单 App Delegate 方法(在 Swift 中)

iPhone 纵向和 iPad 横向的通用应用程序