2単語に含まれる文字を比較しています。これを達成するために、Set
(別名NSSet
)がこのタスクを達成する方法のように思えました。私は試合で偽陽性を返すことを発見したので、CountedSet
(別名NSCountedSet
)を使用しようとしています。`CountedSet`初期化の問題
Set
を問題なく初期化できますが、CountedSet
イニシャライザを動作させることができません。ここで私はString
で始まる、私は...
をやったものだ:
// Let's say myTextField.text = "test"
let textFieldCharacters = myTextField.text?.characters
// word is a string from the ENABLE list of words
let wordCharacters = word.characters
その後、私はArray
に文字をダンプ:
var wordCharactersArray = [Character]()
for character in wordCharacters {
wordCharacterArray.append(character)
}
var textFieldCharactersArray = [Character]()
for character in textFieldCharacters {
wordCharacterArray.append(character)
}
その後、私は文字からSet
を作成配列:
let textFieldSet = Set<Character>(textFieldCharactersArray)
let wordSet = Set<Character>(wordCharactersArray)
最後に、 textFieldSet
は以下とwordSet
のスーパーセットである:
textFieldSet.isSuperset(of: wordSet)
myTextField.text
は、「テスト」で、私はその文字wordSet
のスーパーセットですword
の値が、カウントを返していた場合、戻って私の例に行きます個々の要素の文字数が一致しないmyTextField.text
私の問題の調査では、CountedSet
(fka NSCountedSet
)が見つかりました。これは私の問題を解決するものと思われます。私はそうのような文字の2セットを初期化しようとした
public convenience init(array: [AnyObject])
public convenience init(set: Set<NSObject>)
::私はセット
Cannot convert value of type '[Character]' to expected argument type '[AnyObject]'.
だから、私は次のエラーを取得する
let textFieldSet = CountedSet(array: textFieldCharacterArray)
let wordSet = CountedSet(array: wordCharacterArray)
これは、2つのメソッドのシグネチャを持っています次のようにセットを初期化しようとしました:
次のエラー得:
'AnyObject' is not a subtype of 'Character'
は、私はまた、メソッドのシグネチャごとに、Set
でCountedSet
を初期化しようとしましたが、私はあまりにも、それを実行しようとするとき、私はエラーを取得します。
CountedSet
を初期化する方法をお勧めします。
:
は違いを確認するには?たとえば、 'let textFieldCharacters =" test ".characters.map {String($ 0)}; let textFieldSet = CountedSet(array:textFieldCharacters) 'が動作するはずです。 – Moritzありがとうございました!それは1)私を正しい道に導き、2)コードをトリミングするための鍵でした。 – Adrian