无法将CountablePartialRangeFrom <int>强制转换为Range <int>

时间:2018-01-22 05:04:26

标签: swift

我有一个类型为Range<Int>?的方法的参数,默认为nil。我想说一个简洁明了的方式&#34;使用给定的范围或使用整个范围&#34;。我所做的一切似乎都很有效,我觉得应该但是......

class func fileNames(entries: Array<DBFILESMetadata>, range: Range<Int>? = nil) -> Array<String> {
    return entries[range ?? 0... as Range<Int>].map{ $0.name }.filter{ $0.hasSuffix(".jpg") }
}

...我收到错误Cannot convert value of type 'CountablePartialRangeFrom<Int>' to type 'Range<Int>' in coercion,我完全得到了,但为什么这样做(通过模式#6在这里:https://stackoverflow.com/a/42860580/84783

let array = ["a", "b", "c"]
let range = 1...
let arraySlice = array[range]

我可以在有条件的情况下这样做,但感觉就像一个班轮应该有效。

1 个答案:

答案 0 :(得分:1)

您可以将方法参数更改为CountableRange,并在nil的情况下传递数组索引属性:

class func fileNames(entries: Array<DBFILESMetadata>, range: CountableRange<Int>? = nil) -> Array<String> {
    return entries[range ?? entries.indices].map{ $0.name }.filter{ $0.hasSuffix(".jpg") }
}