配列文字列にrandom
範囲関数を使用しています。また、私は配列の文字列を繰り返さないためにフィルターを使用していますが、時には最初のランダムな文字列がnilです。ランダム配列文字列がゼロになる
ランダム範囲コード:
func randomNumber(range: Range<Int> = 1...6) -> Int {
let min = range.startIndex
let max = range.endIndex
return Int(arc4random_uniform(UInt32(max - min))) + min
}
私はfirstItem
からnilを取得しています:
var a = cities[randomNumber(0...80)]
if Marmara.contains(a){
firstItem = a
print(firstItem) //It's getting nil sometimes.
var filteredForSecond = Marmara.filter{$0 != firstItem}
secondItem = filteredForSecond[randomNumber(0...filteredForSecond.count-1)]
print(secondItem)
var filteredForThird = Marmara.filter{$0 != secondItem && $0 != firstItem}
thirdItem = filteredForThird[randomNumber(0...filteredForThird.count-1)]
print(thirdItem)
var filteredForFourth = Marmara.filter{$0 != thirdItem && $0 != secondItem && $0 != firstItem}
print(fourthItem)
fourthItem = filteredForFourth[randomNumber(0...filteredForFourth.count-1)]
//sehirler.removeAtIndex(s)
print("\(firstItem), \(secondItem), \(thirdItem), \(fourthItem)")
}
私はこのコードを使用して、アレイ内の "81" の文字列を持っています。この無限の問題を解決するにはどうすればよいですか?
それがnilである 'cities'配列のエントリを選ぶので、おそらく' A'がnilです。 if文を 'Marmara.contains(a)&& a!= nil'に変更するか、都市全体の配列を初期化したことを確認してください。 – BradzTech
私はあなたの方法を試して空になりました。それはちょうど空になる。それは何も言いませんが、ただ空です。私はそれが無限になっている、それは合格条件ではありません。しかし、それはパスして空になる。私は問題を起こさない:あなたはコードをテストすることができますか? – jorjj
'cities'配列を作成した場所にコードを投稿できますか?または 'print(cities)'の出力。あなたの仕事がうまくいくためには、そのエンジェルは何もないはずです。 – BradzTech