• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: KVC/KVO compliance of a container adding multiple objects
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: KVC/KVO compliance of a container adding multiple objects


  • Subject: Re: KVC/KVO compliance of a container adding multiple objects
  • From: Ken Thomases <email@hidden>
  • Date: Wed, 2 Jul 2008 04:51:21 -0500

On Jul 1, 2008, at 7:16 PM, mmalc Crawford wrote:

On Jul 1, 2008, at 4:33 PM, Graham Cox wrote:

I also have a number of methods that allow "things" to be added from arrays, or indexed by an index set. Is there a way to make these KVC/KVO compliant or would they all
have to call through to one or more of these methods to ensure that?


<http://developer.apple.com/documentation/Cocoa/Conceptual/KeyValueObserving/Concepts/AutoVsManual.html#//apple_ref/doc/uid/20001844-178876 >

<http://homepage.mac.com/mmalc/CocoaExamples/controllers.html>
Batch modification of collections

Actually, a recent cocoa-dev thread alerted me to the documentation hidden in the NSKeyValueCoding.h header. According to the method descriptions in there, Tiger introduced several new indexed accessor templates:


-<key>AtIndexes:
-insert<Key>:atIndexes:
-remove<Key>AtIndexes:
-replace<Key>AtIndexes:with<Key>:

which all correspond directly to NSArray/NSMutableArray methods.

So, Graham, you could use the following:

-objectsAtIndexes:
-insertObjects:atIndexes: // instead of your home-grown addObjectsFromArray:atIndexes:
-removeObjectsAtIndexes: // You got this one square on. Ain't naming conventions great!
-replaceObjectsAtIndexes:withObjects:


You should probably implement your removeObjectsInArray: in terms of - [NSArray indexOfObjectIdenticalTo:] and removeObjectsAtIndexes:.

You probably already know this, but you don't _need_ to implement _every_ such method for your property. For any given method in the KVC protocol, there is some satisfactory subset that you can implement. Once you've satisfied the requirements, implementing the other methods may be nice for 1) optimization (as documented) or 2) because they are convenient for your own code to call. Of course, feel free to go whole-hog if you want, just know it's not strictly necessary.

Cheers,
Ken
_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


  • Follow-Ups:
    • Re: KVC/KVO compliance of a container adding multiple objects [SOLVED]
      • From: Graham Cox <email@hidden>
    • Re: KVC/KVO compliance of a container adding multiple objects
      • From: Ken Thomases <email@hidden>
References: 
 >KVC/KVO compliance of a container adding multiple objects (From: Graham Cox <email@hidden>)
 >Re: KVC/KVO compliance of a container adding multiple objects (From: mmalc Crawford <email@hidden>)

  • Prev by Date: Re: Why aren't my bindings firing?
  • Next by Date: Re: Getting mouse moved events on overlay windows
  • Previous by thread: Re: KVC/KVO compliance of a container adding multiple objects
  • Next by thread: Re: KVC/KVO compliance of a container adding multiple objects
  • Index(es):
    • Date
    • Thread