-count(NSPlaceholderSet)

  • -count(NSPlaceholderSet)

    [Session started at 2006-06-26 20:52:31 +0200.]
    2006-06-26 20:52:36.962 Forum #9811[22166] *** -count only defined for abstract class. Define -[NSPlaceholderMutableSet count]!
    2006-06-26 20:52:42.138 Forum #9811[22166] Exception raised during posting of notification. Ignored. exception: *** -count only defined for abstract class. Define -[NSPlaceholderSet count]!
    Unmittelbar nach dem Decoding bekomme ich die erste Fehlermeldung, die zweite beim Beenden, wenn das Objekt bis zum Programende nicht verändert (ausgetauscht) wird. -copy beim Serialisieren und Deserialisieren habe ich schon porbiert.

    Erneuere ich das Objekt, funktioniert alles einwandfrei.

    Ich bin mir auch sicher, dazu (Serialisierung/Mutables) etwas in der Doku gelesen zu haben, finde es aber nicht mehr im Artikel.

    Weiß jemand von euch etwas?
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • -makeObjectsPerformSelector:withObject:(NSSet) offenkundig buggy!?

    Ok, ich denke wichtig für viele. Offenkundig ist -makeObjectsPerformSelector:withObject:(NSSet) buggy. Ob es da einen Zusammenhang mit der Deserialisierung gibt, kann ich nicht sagen.

    Also kurz die Geschichte: Ich habe eine Liste von Threads, die zu einem Board gehören. Nachträglich habe ich Clusters (NSSet von NSSets) eingefügt. Jeder Thread benötigt jetzt einen Rückverweis auf einen Cluster (NSSet). Damit ich die alten Daten nicht neu laden muss (mir ging es gerade um alte Daten), habe ich einfach die Threads wie sie sind geladen und danach Folgendes gemacht:

    Quellcode

    1. NSSet* cluster = [NSSet setWithArray:[self threadsArray]];
    2. [self setFirstCluster:cluster];
    3. [cluster makeObjectsPerformSelector:@selector( setCluster: ) withObject:cluster];

    Dieses in der müden Hoffnung, es würde für jeden Thread (-setWithArray:(NSSet)) der Cluster gesetzt. Dann das Ganze wieder gespeichert und gut sollte es sein. Beim nächsten Laden müsste ja alles richtig stehen.

    Die Fehlermeldung resultierte daraus, dass jedoch manche Cluster-Member auf nil standen. Das sah ich beim nächsten Laden.

    Nun habe ich zusätzliches Folgendes eingefügt:

    Quellcode

    1. NSEnumerator* postingsEnum = [cluster objectEnumerator];
    2. Posting* posting;
    3. while( (posting = [postingsEnum nextObject]) ) {
    4. [posting setCluster:cluster];
    5. }

    Ich setze also noch einmal "von Hand" jede Cluster-Member. Und siehe da, beim nächsten Laden gibt es keine Cluster=nil mehr. *Ohne Worte*

    Wenn jemand eine bessere Idee als "verficktes Cocoa" hat, möge er sich bitte melden.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?