2012-02-01 17 views
0

NSArray内にNSDictionariesがいくつかあります。私は、配列全体がその変更(テーブルビューを読み込む)を持つように、辞書の中のBOOLを修正したい。辞書の更新キー

私はこのコードを持っていますが、BOOLは変更されません。あなたは、オブジェクトの変更可能なコピーを作成する場合、それは正確に、コピーできるでしょう

NSLog(@"before: %@", self.currentScopeArray); 
    if (cell.accessoryType == UITableViewCellAccessoryNone) { 
     cell.accessoryType = UITableViewCellAccessoryCheckmark; 
     [[self.currentScopeArray objectAtIndex:iIndexPath.row] setObject:[NSNumber numberWithBool:YES] forKey:@"enabledByDefault"]; 
    } else {  
     if (!(self.currentScopeArray.count < 2)) { 
      cell.accessoryType = UITableViewCellAccessoryNone; 
      [[[self.currentScopeArray objectAtIndex:iIndexPath.row]mutableCopy] setObject:[NSNumber numberWithBool:NO] forKey:@"enabledByDefault"]; 
     } 
    } 
    NSLog(@"after: %@", self.currentScopeArray); 

答えて

1

あなたがたNSArrayにNSDictionaryのの束を追加しています。私はあなたが

  • NSMutableDictionary

なぜにNSDictionaryのを確認しNSMutableArrayの

  • にNSArrayのを作ることを示唆しているのでしょうか?すでにディクショナリ内の値を変更する必要があるためです。また、辞書から辞書を追加/削除する可能性があります。あなたがそれらを可変行った後、あなたがこれを行うことができます。

    [[self.currentScopeArray objectAtIndex:iIndexPath.row] setObject:[NSNumber numberWithBool:YES] forKey:@"enabledByDefault"]; 
    

    とあなたの現在の実装ではと

    [[self.currentScopeArray objectAtIndex:iIndexPath.row] setObject:[NSNumber numberWithBool:NO] forKey:@"enabledByDefault"]; 
    

    もう一つの問題は、あなたが可変コピーない上で動作していることです元の辞書に。コピーは変更されていますが、オリジナルは変更されていません。

  • 1

    ...私は仕事にmutableCopyを削除する必要があるような気がしますが、それはクラッシュします。すでにcurrentScopeArrayの中にあるオブジェクトを突然変異させたい場合は、配列内に変更可能なオブジェクトを持っている必要があります。あるいは、変更可能なコピーを取得し、それを突然変異させて元のオブジェクトを置き換える必要があります。

    私は前者が正直であることを提案します。だから、あなたはそれにNSMutableDictionary Sを追加してcurrentScopeArrayを作成し、その後、ちょうどこの行を置き換えます。これで

    [[[self.currentScopeArray objectAtIndex:iIndexPath.row]mutableCopy] setObject:[NSNumber numberWithBool:NO] forKey:@"enabledByDefault"]; 
    

    を:

    [[self.currentScopeArray objectAtIndex:iIndexPath.row] setObject:[NSNumber numberWithBool:NO] forKey:@"enabledByDefault"]; 
    
    +0

    その行から 'mutableCopy'を削除しましたが、他に何が必要ですか?私がしていることがあれば、アプリはクラッシュします。 – Jon

    +0

    その配列の辞書は 'NSMutableDictionary'sである必要があります。どのようにして最初にアレイを作成していますか? – mattjgalloway