如何可以执行在数组切片 Swift ?

标签: ios Swift
发布时间: 2017/3/6 23:13:35
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.
var mentions = ["@alex", "@jason", "@jessica", "@john"]

我想要限制我到 3 项的数组,所以我想拼接到︰

var slice = [String]()
if mentions.count > 3 {
    slice = mentions[0...3] //alex, jason, jessica
} else {
    slice = mentions
}

然而,我的意思︰

基类型 '[字符串]' 与索引类型范围暧昧下标

苹果 Swift 版本 2.2 (swiftlang-703.0.18.8 咚锵-703.0.31) 目标︰ x86_64-苹果-macosx10.9

解决方法 1:

问题是, mentions[0...3] 返回 ArraySlice<String> ,不 Array<String> 。因此你可以首先使用 Array(_:) initialiser 为了把切片转换成数组︰

let first3Elements : [String] // An Array of up to the first 3 elements.
if mentions.count >= 3 {
    first3Elements = Array(mentions[0..<3])
} else {
    first3Elements = mentions
}

或如果您想要使用 ArraySlice (他们是有用的中间计算,他们目前 '视图中的拖到原始数组,但不适用于长期存储),你可以下标 mentions 与全方位的指数在你 else :

let slice : ArraySlice<String> // An ArraySlice of up to the first 3 elements
if mentions.count >= 3 {
    slice = mentions[0..<3]
} else {
    slice = mentions[mentions.indices]
}

虽然到目前为止最简单的解决方案将是只是为了使用 prefix(_:) 方法,将返回 ArraySlice 的前 n 个元素或一片整个数组如果 n 超过数组计数︰

let slice = mentions.prefix(3) // ArraySlice of up to the first 3 elements
官方微信
官方QQ群
31647020