1

プロジェクトでCVCalendarを使用しており、Xcode を 8.0 Beta に更新しました。問題は、1 つのファイルで次のようなエラーが表示されることです。

1) '()' 型の引数リストを使用して 'Int' 型の Intializer を呼び出すことはできません

2) 引数ラベル '(body:)' が使用可能なオーバーロードと一致しません

// MARK: - SequenceType

private var storage = [T]()

extension CVSet: Sequence {
    public func makeIterator() -> AnyIterator<T> {
        var power = 0
        let nextClosure : () -> T? = {

            (power < self.count) ? self.storage[Int(power += 1)] : nil //Getting error here self.storage[Int(power += 1)]
        }
        return AnyIterator(body: nextClosure)
    }
}
4

1 に答える 1

0

+=演算子には などの型があり、戻り値の型が/ /(Int, Int) -> _であることを意味します。つまり、関数は何も返しません。_()void

したがって、式Int(power += 1)は と同じでInt()あり、有効ではありません。

これは、大きな式に隠された厄介な副作用を防ぐために行われました。代わりに試してください:

if (power < self.count) {
    power += 1
    return self.storage[power]
}
else {
    return nil
}
于 2016-06-14T13:09:54.733 に答える