ボタンをクリックするとstockSymbolの値と同じNSUserDefaultsの要素を削除しようとしました。私の考えは、NSUserDefaultsを配列にキャストし、removeAtIndexで要素を削除することです。ここに私のコードです。removeAtIndexでSwiftのインデックスが範囲外になっています
@IBAction func buttonFilledStarClicked(sender: AnyObject) {
NSLog("Filled star clicked")
self.buttonFilledStar.hidden = true
self.buttonEmptyStar.hidden = false
var Array = NSUserDefaults.standardUserDefaults().objectForKey("favorites")! as! [String]
var countArray = (NSUserDefaults.standardUserDefaults().objectForKey("favorites")! as! [String]).count - 1
for i in 0...countArray {
if stockSymbol! == Array[i] {
NSLog("i is : \(i)")
Array.removeAtIndex(i)
}
else {}
}
NSLog("Array is: \(Array), countArray is: \(countArray)")
}
ただし、「インデックス外です」というエラーがあります。 私はちょうどArray.removeAtIndex(i)
をコメントアウトすると動作します。 配列は次のようになります。 ["aa"、 "bb"、 "Test!"、 "Test!"] 提案がありますか?前もって感謝します。
あなたは後ろから前に繰り返す必要があります。 – nhgrif