• 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
noob questions regarding KVC accessors for a mutable array property
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

noob questions regarding KVC accessors for a mutable array property


  • Subject: noob questions regarding KVC accessors for a mutable array property
  • From: Stuart Malin <email@hidden>
  • Date: Thu, 26 Jun 2008 16:54:40 -0700

I am trying to gain a working understanding of KVC. I have made a small app that has a class Party which has a property "attendees" that holds Person objects. The attendees property is KVC compliant for a mutable array (it has index accessors). In another part of my app, I want to find the Nth attendee. My first approach to doing so was to code:
Person *person = [[party mutableArrayValueForKey:@"attendees"] objectAtIndex:index];
This does work, and, as I best understand, it complies with the KVC protocol.
But I do believe this approach generates a proxy mutable array, which seems inefficient to me. As the underlying Party class is KVC compliant for the attendees property, I substituted the above with:
Person *person = [party objectInAttendeesAtIndex:index];
This does work. But I sense I may be breaking some sort of "encapsulation" regarding the workings of KVC by using the accessors that support it.


The compiler issued a warning that "Party" may not respond to - objectInAttendeesAtIndex: because I hadn't included the index accessors in the class's header file... Which I could do.... But then wonder even more if I am exposing something that I shouldn't. Question: is it acceptable (perhaps even desirable) to expose the index accessors of a class via its interface declaration (header file)?

Also: I could add a method to my Party class to provide such access in a way that seems more semantically direct, to wit: -personAtIndex:
Would providing such a method be preferred to having code elsewhere in the app use the Party class's KVC index accessor(s)?
(It does seem quite redundant)


~~~

Separately, I have an accessor -attendees: of the Party class, which is currently implemented as:

- (NSArray*) attendees
{
return [NSArray arrayWithArray:attendees]; // "attendees" is an NSMutableArray, and is an ivar
}


I intentionally do not return the underlying mutable array, because I don't want other code accessing the content without going through the accessors.

Is my implementation reasonable? Or are there preferable ways to do this (such as to return a copy of the mutable array)?


_______________________________________________

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: noob questions regarding KVC accessors for a mutable array property
      • From: Scott Anguish <email@hidden>
    • Re: noob questions regarding KVC accessors for a mutable array property
      • From: Ken Thomases <email@hidden>
  • Prev by Date: NSTableView / NSArrayController Drawing
  • Next by Date: Re: NSArchiver question?
  • Previous by thread: Re: NSTableView / NSArrayController Drawing
  • Next by thread: Re: noob questions regarding KVC accessors for a mutable array property
  • Index(es):
    • Date
    • Thread