KVO @count bei NSMutableSet

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • KVO @count bei NSMutableSet

    Hallo,

    ich stehe gerade auf dem Schlauch: Ich möchte gern die Anzahl eines NSMutableSet observieren (es handelt sich um eine Queue und ich würde gern das GUI in Abhängigkeit der Zahl anpassen). Alledings funktioniert @count nicht und auch diese komische Extra-Accessoren-Gewirr mit countOfLaberLaber, wie bei NSMutableArray (früher?), geht nicht.

    Was mache ich falsch bzw. habt Ihr einen Tipp für mich?
  • Und warum nimmst du nicht count?
    count
    Returns the number of members in the set.

    - (NSUInteger)count
    Return Value
    The number of members in the set.

    Availability
    Available in OS X v10.0 and later.


    Chris
    Man macht einfach solange irgendwelche Dinge, bis man tot ist.
    Und dann bekommen die anderen Kuchen.
  • DanielBocksteger95 schrieb:

    Chris schrieb:

    Und warum nimmst du nicht count?
    count
    Returns the number of members in the set.

    - (NSUInteger)count
    Return Value
    The number of members in the set.

    Availability
    Available in OS X v10.0 and later.


    Chris


    Er schreibt doch, dass es damit nicht geht, oder nicht ?!

    Erschreibt @count, nicht count.
    Ersteres nimmt man bei Predicates, das andere ist eine Methode von NSSet.

    Chris
    Man macht einfach solange irgendwelche Dinge, bis man tot ist.
    Und dann bekommen die anderen Kuchen.
  • Amin Negm-Awad schrieb:

    Das Geschwurbel hast du aber mit dem Geschwurbel für Sets probiert, nicht mit dem Array-Geschwurbel?

    Ich muss zugeben, dass ich das Geschwurbsel für Arrays genommen und angepasst habe :( - ich habe das für Sets nicht finden können, trotz google. Vermutlich liegt es einfach daran. Kannst Du mir einen Link geben? Leider kann man das in Xcode ja nicht mehr automatisch erzeugen lassen.

    @Chris: Ich möchte nicht die Anzahl wissen, sondern die Anzahl observieren.
  • fwtag schrieb:

    Amin Negm-Awad schrieb:

    Das Geschwurbel hast du aber mit dem Geschwurbel für Sets probiert, nicht mit dem Array-Geschwurbel?

    Ich muss zugeben, dass ich das Geschwurbsel für Arrays genommen und angepasst habe :( - ich habe das für Sets nicht finden können, trotz google. Vermutlich liegt es einfach daran. Kannst Du mir einen Link geben? Leider kann man das in Xcode ja nicht mehr automatisch erzeugen lassen.

    @Chris: Ich möchte nicht die Anzahl wissen, sondern die Anzahl observieren.

    Das ist der kleine Unterschied zwischen überfliegen und verstehen. ;)
    Ich vermute du behandelst dein Set nicht KVC gemäß.
    Ich hab dir mal 'nen Topf angehängt.

    Chris
    Man macht einfach solange irgendwelche Dinge, bis man tot ist.
    Und dann bekommen die anderen Kuchen.
  • fwtag schrieb:

    Jein. Mit expliziten Accessoren kann ich das auch - ich möchte aber ein KVO auf "toepfchen.@count" haben, damit ich die Standard-NSMutableSet-methoden fürs hinzufügen und entfernen nutzen kann. Bei NSMutableArray geht das ja auch.

    Du behauptest dass [mutableSet addObject: xxx] ein KVO auslöst? Bei mir nicht.
    Und mit einem MutableSet auch nicht.
    Musst du wohl doch das Set Geschwurbel machen.
    Doku ist hier.
    Und fürs toepfchen sieht es so aus

    Quellcode

    1. - (void)applicationDidFinishLaunching:(NSNotification *)aNotification
    2. {
    3. self.toepfchen = [NSMutableSet set];
    4. [self addObserver: self forKeyPath: @"toepfchen.@count" options: 0 context: NULL];
    5. }
    6. - (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
    7. {
    8. NSLog(@"keyPath: %@ object: %@ change: %@", keyPath, object, change);
    9. }
    10. - (IBAction) hinein:(id)sender
    11. {
    12. [self addToepfchenObject: [NSDate date]];
    13. //[self.toepfchen addObject: [NSDate date]];
    14. }
    15. - (IBAction) heraus:(id)sender
    16. {
    17. NSDate *date = [self.toepfchen anyObject];
    18. [self removeToepfchenObject: date];
    19. //[self.toepfchen removeObject: date];
    20. }
    21. - (void) addToepfchenObject:(NSObject *)object
    22. {
    23. [self.toepfchen addObject: object];
    24. }
    25. - (void) removeToepfchenObject:(NSObject *)object
    26. {
    27. [self.toepfchen removeObject: object];
    28. }
    Alles anzeigen


    Chris
    Man macht einfach solange irgendwelche Dinge, bis man tot ist.
    Und dann bekommen die anderen Kuchen.
  • fwtag schrieb:

    Mit expliziten Accessoren kann ich das auch - ich möchte aber ein KVO auf "toepfchen.@count" haben, damit ich die Standard-NSMutableSet-methoden fürs hinzufügen und entfernen nutzen kann.


    NSSet Class Reference schrieb:

    NSSet objects are not observable, so this method raises an exception when invoked on an NSSet object. Instead of observing a set, observe the unordered to-many relationship for which the set is the collection of related objects.


    fwtag schrieb:

    Bei NSMutableArray geht das ja auch.


    Echt? Samplecode?
  • wolf_10de schrieb:

    Also mit nem Arraycontroller und nem arrangedObjects @count geht das.
    Sollte doch dann auch mit nem Set gehen

    Dachte ich mir eigentlich auch ..

    Chris schrieb:

    Du behauptest dass [mutableSet addObject: xxx] ein KVO auslöst? Bei mir nicht.

    Nein, das behaupte ich nicht. Ich behaupte, dass ich gern ein KVO auf @count der Property anmelden möchte, die das mutable Set hält. Hmm, ich klinge schon wie Amin.

    Aber der Link ist - denke ich - genau das, was ich gesucht und nicht gefunden habe. Danke!