2013-01-15 3 views

Antwort

16

Wenn car.mySet Ihr Set ist, können Sie versuchen, es so,

NSMutableSet *mutableSet = [car.mySet mutableCopy]; 
[mutableSet removeObject:carpartsObject]; 
car.mySet = [mutableSet copy]; 
+0

perfekt! das funktioniert, danke! –

+0

Ich bin froh zu helfen. Vielen Dank. :) – iDev

2

Ich gehe davon aus, dass Car ist eine Unterklasse von NSManagedObject, da Sie den Kern-Daten-Tag haben.

Core-Daten sind KVO-konform.

Reference here
dynamisch generierten Zugriffsmethoden

standardmäßig Core Data erstellt dynamisch effiziente öffentliche und primitive get und set-Accessormethoden für modellierten Eigenschaften (Attribute und Beziehungen) der verwalteten Objektklassen. Dazu gehören die Schlüsselwertcodierungs-Mutable-Proxy-Methoden wie add<Key>Object: und entfernt :, wie in der Dokumentation für mutableSetValueForKey ausführlich beschrieben: -managed Objekte sind effektiv veränderbare Proxys für alle ihre zu viele Beziehungen.

Andere Reference here über Konvention für KVO Benennung

Damit ein mutable unordered to-many relationship Schlüssel-Wert-Codierung Beschwerde sein, Sie die folgenden Methoden implementieren müssen:

-add<Key>Object: or -add<Key>:. Mindestens eine dieser Methoden muss implementiert werden. Diese sind analog zur NSMutableSet-Methode addObject :.
-remove<Key>Object: or -remove<Key>:. Mindestens eine dieser Methoden muss implementiert werden. Diese sind analog zu der NSMutableSet-Methode removeObject :.
-intersect<Key>:. Wahlweise. Implementieren, wenn das Benchmarking anzeigt, dass Leistung ein Problem darstellt. Es führt die äquivalente Aktion der NSSet-Methode intersectSet: aus.

+0

Dies ist eine bessere Antwort, dann in einer Zeile: [auto removeCarpartsObject: carpartsObject]; – Esteve

0

Wenn Sie sicher, dass das zu viele machen wollen Objekt auch aus dem Objektspeicher entfernt wird (die Standardaktion ist die Muttergesellschaft zunichte zu machen), können Sie eine der automatisch generierten Methoden der Car außer Kraft setzen:

- (void)removeCarpartsObject:(Carpart *)value 
{ 
    NSMutableSet *set = [self mutableOrderedSetValueForKey:NSStringFromSelector(@selector(carparts))]; 

    [set removeObject:value]; 
    [self.managedObjectContext deleteObject:value]; 
} 
0

Nur eine weitere alternative Methode zum Löschen von Objekten in NSSet von Core Data verwendet unten. Ich habe es selbst versucht und es funktioniert auch.

- (void)removeCarpartsObject:(Carpart *)value 
    { 
     NSError *error; 
     NSInteger index = [car.mySet.allObjects indexOfObject:carpartsObject]; 

     [self.managedObjectContext deleteObject:car.mySet.allObjects[index]]; 
[self.managedObjectContext save:&error]; 
    } 
Verwandte Themen