• 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: Don't Understand KVC Error Using Array Operators
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Don't Understand KVC Error Using Array Operators


  • Subject: Re: Don't Understand KVC Error Using Array Operators
  • From: Ron Lue-Sang <email@hidden>
  • Date: Tue, 8 Jul 2008 08:44:23 -0700


On Jul 8, 2008, at 8:02 AM, Jon Gordon wrote:

I can't understand why I'm getting an exception when I try to use the array operators.

Here's what I'm trying to do. One instance variable is a NSMutableArray named "contacts". This array contains instances of objects that have a "call" property, which is an NSString. I have another instance variable, also an NSString, named "exCall". I want to find out whether any contact has a call property that equals exCall.

(It's a ham radio logging program.  Yes, I know I'm a nerd, thanks.)

The following method works:

- (BOOL)callInLog
{
   if (!contacts || ![contacts count] ||
       ![self exCall] || ![[self exCall] length])
       return NO;

   NSEnumerator *e = [[self contacts] objectEnumerator];
   QEContact *contact;
   while (nil != (contact = [e nextObject])) {
       if ([[contact call] isEqual:[self exCall]])
           return YES;
   } // while

   return NO;

} // callsignInLog


The following method throws an exception every time:

- (BOOL)callInLog
{
   if (!contacts || ![contacts count] ||
       ![self exCall] || ![[self exCall] length])
       return NO;

   return ([[self valueForKey:@"email@hidden"]
            containsObject:[self exCall]]);
} // callsignInLog


The message on the console is "Exception raised during posting of notification. Ignored. exception: '[<QELogModel 0x15c3a0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key email@hidden.' invoked observer method: '*** -[NSTextField textDidEndEditing:]' observer: 0x17a0a0 notification name: 'NSTextDidEndEditingNotification'"

valueForKey and valueForKeyPath are two different KVC accessors. You're using valueForKey and passing a dot-separated string. People usually use dot-separated strings as keypaths and pass them to valueForKeyPath.


<more info than you really need to know to fix this>
It's totally legal to pass dot-separated strings to value for key, but the NSObject built in logic won't be able to find a property or getter method with a sig like "email@hidden". Mainly since that's not a valid obj-c ivar or method name.
</more info than you really need to know to fix this>


use valueForKeyPath instead of valueForKey.



Shouldn't the results of the two routines be identical? If not, why not?

(I'm running XCode v. 3.0 on a PPC machine that's running Leopard v. 10.5.4. The target SDK is Mac OS X 10.4 (Universal), with all that entails, such as no garbage collection or ObjC 2.0.)

Thanks for any help,

	-Jon
_______________________________________________

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


--------------------------
RONZILLA



_______________________________________________

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: Don't Understand KVC Error Using Array Operators
      • From: Jon Gordon <email@hidden>
References: 
 >Don't Understand KVC Error Using Array Operators (From: Jon Gordon <email@hidden>)

  • Prev by Date: Re: Proposal for metadata interoperability on OS X
  • Next by Date: Re: iPhone SDK and sms.db file
  • Previous by thread: Don't Understand KVC Error Using Array Operators
  • Next by thread: Re: Don't Understand KVC Error Using Array Operators
  • Index(es):
    • Date
    • Thread