参数类型 'Range<Int>' 不符合预期的类型 'Sequence' Swift3

Posted

技术标签:

【中文标题】参数类型 \'Range<Int>\' 不符合预期的类型 \'Sequence\' Swift3【英文标题】:Argument type 'Range<Int>' does not conform to expected type 'Sequence' Swift3参数类型 'Range<Int>' 不符合预期的类型 'Sequence' Swift3 【发布时间】:2016-10-03 05:15:08 【问题描述】:

您好,我在 Swift3 之后遇到错误。我该如何解决这个错误?这些方法提供不重复的随机数。

 func uniqueRandoms(_ count: Int, inRange range: Range<Int>, blacklist: [Int] = []) -> [Int] 
    var r = [Int](range)
        .filter !blacklist.contains($0) 
        .shuffle()

    return Array(r[0..<count])




extension Array 
func shuffle() -> Array<Element> 
    var newArray = self

    for i in 0..<newArray.count 
        let j = Int(arc4random_uniform(UInt32(newArray.count)))
        guard i != j else  continue 
        swap(&newArray[i], &newArray[j])
    

    return newArray


谢谢

【问题讨论】:

【参考方案1】:

使用范围的lowerBoundupperBound属性为[Int]的数组创建序列。

var r = [Int](range.lowerBound..<range.upperBound)

【讨论】:

欢迎朋友 :) 遗憾的是它不适用于符合 SignedInteger 的泛型。为此,您还需要使用 toIntMax() 进行转换【参考方案2】:

我建议你使用CountableRange&lt;Int&gt;

【讨论】:

以上是关于参数类型 'Range<Int>' 不符合预期的类型 'Sequence' Swift3的主要内容,如果未能解决你的问题,请参考以下文章

无法将类型“Range<Int32>”的值转换为预期的参数类型“Range<_>”

无法转换“NSSet”类型的值?到预期的参数类型'Range<Int>'(使用CoreData)

无法将类型“[Surah]”的值转换为预期的参数类型“Range<Int>”

SwiftUI 核心数据错误 - “无法将 'FetchedResults<GCItem>' 类型的值转换为预期的参数类型 'Range<Int>'”

无法将类型“Range<String.Index>”(又名“Range<String.CharacterView.Index>”)的值转换为预期的参数类型“NSRange”(又

无法将“Range<String.Index>”类型的值转换为预期的参数类型“UITextRange”