web-dev-qa-db-ja.com

Swift 2.0: 'enumerate'は利用できません:シーケンスで 'enumerate()'メソッドを呼び出します

Xcode 7 Betaをダウンロードしたところ、このエラーはenumerateキーワードに現れました。

_for (index, string) in enumerate(mySwiftStringArray)
{

}
_

誰も私がこれを克服するのを助けることができますか?

また、count()Stringの長さをカウントするために機能しなくなったようです。

_let stringLength = count(myString)
_

上記の行では、コンパイラは次のように述べています。

「count」は使用できません:コレクションの「count」プロパティにアクセスします。

Has Appleは、Swift 2.0?

34
itsji10dra

多くのグローバル関数は、プロトコル拡張メソッド、Swift 2のように、enumerate()SequenceTypeの拡張メソッドになりました:

_extension SequenceType {
    func enumerate() -> EnumerateSequence<Self>
}
_

として使用

_let mySwiftStringArray = [ "foo", "bar" ]
for (index, string) in mySwiftStringArray.enumerate() {
   print(string) 
}
_

また、StringSequenceTypeに準拠しなくなったため、charactersプロパティを使用してUnicode文字のコレクションを取得する必要があります。また、count()は、グローバル関数ではなく、CollectionTypeのプロトコル拡張メソッドです。

_let myString = "foo"
let stringLength = myString.characters.count
print(stringLength)
_

Swift 3:enumerate()の更新はenumerated()に名前が変更されました:

_let mySwiftStringArray = [ "foo", "bar" ]
for (index, string) in mySwiftStringArray.enumerated() {
    print(string)
}
_
105
Martin R

Enumerate()の使用時にSwift 2の更新がありました。

enumerate(...)の代わりに、人々は

... .enumerate()

その理由は、多くのグローバル関数がプロトコル拡張メソッドに置き換えられ、列挙エラーが発生するためです。

お役に立てれば。ではごきげんよう。 n

5
nigel

私はこれが古いスレッドであることを知っていますが、Swift 2.0とPlaygroundsをいじくり回しているだけで、enumerate()を使用するソリューションを共有すると思った同じ問題に遭遇しました文字列のメソッド

// This line works in Swift 1.2
// for (idx, character) in enumerate("A random string, it has a comma.")

// Swift 2.x
let count = inputString.characters

for (idx, character) in count.enumerate() where character == "," {

    // Do something with idx
}

お役に立てれば

ありがとうカイ

0
Kai Windle