Arrays 变量';报价单被洗牌';推断为具有类型';()';,这可能出乎意料

Arrays 变量';报价单被洗牌';推断为具有类型';()';,这可能出乎意料,arrays,swift,Arrays,Swift,与此问题相关,但有一个不同的错误: 我已经尝试了Swift 3和Swift 4代码,从这个问题: 我使用的是Swift 3.2,当使用Swift 3代码时,它会因为我没有使用SwapAt而对我大喊大叫,所以我加入了Swift 4代码,但我尝试了两者,结果相同 当使用shuffle()方法时,我得到的错误变量'offerCardsShuffled'推断为具有类型'()',这可能是意外的,并且随后出现的明显错误是,元组类型'()'的值没有成员'枚举' 我不确定是什么原因导致了这个问题,因为其他使用

与此问题相关,但有一个不同的错误:

我已经尝试了Swift 3和Swift 4代码,从这个问题:

我使用的是Swift 3.2,当使用Swift 3代码时,它会因为我没有使用SwapAt而对我大喊大叫,所以我加入了Swift 4代码,但我尝试了两者,结果相同

当使用shuffle()方法时,我得到的错误
变量'offerCardsShuffled'推断为具有类型'()',这可能是意外的
,并且随后出现的明显错误是,
元组类型'()'的值没有成员'枚举'

我不确定是什么原因导致了这个问题,因为其他使用这个代码的人似乎没有这个问题。为什么我的无序数组会显示为空元组

注:我对Swift开发还比较陌生,所以彻底的解释肯定会有帮助

    func displayOfferCards() -> Void {
        //let offerCardsr = allOfferCards().reversed()
        var offerCards = allOfferCards()
        var offerCardsShuffled = offerCards.shuffle()

        for (index, offerCard) in offerCardsShuffled.enumerated() {
            let delay = Double(index) * 0.2
            offerCard.display(delay: delay)
        }
    }
}

func allOfferCards() -> [OfferCard]{

    guard dataSource != nil else {
        return []
    }

    let numberOfCards = self.dataSource!.kolodaNumberOfCards(self)

    var offerCards = [OfferCard]()

    for i in 0..<numberOfCards {
        let offerCard = viewForCard(at: i)

        if let offerCard = offerCard {
            offerCards.append(offerCard as! OfferCard)
        }

    }

    return offerCards
}

extension MutableCollection {
    /// Shuffles the contents of this collection.
    mutating func shuffle() {
        let c = count
        guard c > 1 else { return }

        for (firstUnshuffled, unshuffledCount) in zip(indices, stride(from: c, to: 1, by: -1)) {
            let d: IndexDistance = numericCast(arc4random_uniform(numericCast(unshuffledCount)))
            let i = index(firstUnshuffled, offsetBy: d)
            swapAt(firstUnshuffled, i)
        }
    }
}

extension Sequence {
    /// Returns an array with the contents of this sequence, shuffled.
    func shuffled() -> [Element] {
        var result = Array(self)
        result.shuffle()
        return result
    }
}
func displayOfferCards()->Void{
//let offerCardsr=allOfferCards().reversed()
var offerCards=allOfferCards()
var offerCardsShuffled=offerCards.shuffle()
对于offerCardsShuffled.enumerated()中的(索引,offerCard){
let延迟=双(指数)*0.2
报价卡显示(延迟:延迟)
}
}
}
func alloffercard()->[OfferCard]{
保护数据源!=无其他{
返回[]
}
让numberOfCards=self.dataSource!.kolodaNumberOfCards(self)
变量OfferCard=[OfferCard]()
对于0..1中的i,否则{return}
对于zip中的(firstUnshuffled,unshuffledCount)(索引,步幅(从:c到:1,由:-1){
设d:IndexDistance=numericCast(arc4random_统一(numericCast(unsuffledcount)))
设i=索引(第一个未缓冲,抵消者:d)
斯瓦帕特(第一个未缓冲,i)
}
}
}
扩展序列{
///返回包含此序列内容的数组,无序排列。
func shuffled()->[元素]{
var结果=数组(自身)
result.shuffle()
返回结果
}
}

您的
shuffle
方法修改原始集合,但不会返回新集合

更改:

var offerCardsShuffled = offerCards.shuffle()
致:


并将剩余代码中的
offercardshuffled
替换为
offerCards

如何打印返回的集合?
offerCards.shuffle()