"Mutating-Methode gesendet immutable object" trotz Objekt NSMutableDictionary

Ich bin mit NSMutableDictionary ein und drücken Sie diese Fehler:

'NSInternalInconsistencyException', reason: '-[__NSCFDictionary removeObjectForKey:]: mutating method sent to immutable object'

Hier der code:

    //Turn the JSON strings/data into objects
    NSError *error;
    NSMutableDictionary *invoiceDictFromReq = [[NSMutableDictionary alloc] init];
//   invoiceDictFromReq = (NSMutableDictionary *)[NSJSONSerialization JSONObjectWithData:[request responseData] options:kNilOptions error:&error];
    invoiceDictFromReq = [NSMutableDictionary dictionaryWithDictionary:[NSJSONSerialization JSONObjectWithData:[request responseData] options:kNilOptions error:&error]];

NSLog(@"invoiceDictFromReq count: %i, key: %@, value: %@", [invoiceDictFromReq count], [invoiceDictFromReq allKeys], [invoiceDictFromReq allValues]);

//Get values and keys from JSON response
self.invoiceDict = [invoiceDictFromReq objectForKey:@"invoice"];
NSNumber *invoiceAmount = [self.invoiceDict objectForKey:@"amount"];
NSNumber *invoiceId = [self.invoiceDict objectForKey:@"id"];
NSNumber *invoiceNumber = [self.invoiceDict objectForKey:@"number"];
NSNumber *checkoutStarted = [self.invoiceDict objectForKey:@"checkoutStarted"];
NSNumber *checkoutCompleted = [self.invoiceDict objectForKey:@"checkoutCompleted"];
NSLog(@"amount: %@, id: %@, number: %@, started: %@, completed: %@", invoiceAmount, invoiceId, invoiceNumber, checkoutStarted, checkoutCompleted);

Den Konsolen-logs anzuzeigen, dass die Daten in Ordnung ist. Dies ist, wo Dinge beginnen zu brechen nach unten.
Ich pass die invoiceDict - Eigenschaft, um die nächste view-controller:

//Pass the invoice to checkoutViewController
[checkoutViewController setInvoiceDict:self.invoiceDict];

In CheckoutViewController.m:

    //Change invoice checkoutCompleted to true
//   [self.invoiceDict removeObjectForKey:@"checkoutCompleted"];
    [self.invoiceDict setObject:[NSNumber numberWithBool:YES] forKey:@"checkoutCompleted"];

Der Fehler ist bei [self.invoiceDict setObject...]. Ich stellte sicher, dass alle Wörterbücher die ich verwende sind NSMutableDictionary. Ich habe manche von den auskommentierten Zeilen in den code zu zeigen, die Dinge, die ich habe versucht, und ich traf eine Mauer. Ich glaube, ich kann immer einen neuen Wörterbuch. Ist, dass der bevorzugte Weg, es zu tun?

InformationsquelleAutor okysabeni | 2011-11-28
Schreibe einen Kommentar