• 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: Fun (or not) with NSArrayControllers and CoreData.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Fun (or not) with NSArrayControllers and CoreData.


  • Subject: Re: Fun (or not) with NSArrayControllers and CoreData.
  • From: Daniel DeCovnick <email@hidden>
  • Date: Wed, 29 Jul 2009 11:27:49 -0700


On Jul 28, 2009, at 5:23 PM, Quincey Morris wrote:

On Jul 28, 2009, at 16:44, Daniel DeCovnick wrote:

-(NSSet *)allDescendentsJobs
{
	...
}

But I can't bind JobsArrayController's content set to this because "entity Folder does not support Key Value Coding for property 'allDescendentsJobs'" because, as I understand it, it's read-only*. At this point I'm stuck. What do I do to get past this?

'allDescendentsJobs' (not how 'descendants' is spelled, btw)

Whoops!

is not a property of entity Folder, so of course you can't point a NSArrayController in *entity* mode at it.

However, 'allDescendentsJobs' *is* a property of your custom NSManagedObject subclass that corresponds to the entity, so you can point a NSArrayController at it in *class* mode. That means you'll have to compute an array instead of a set.


Returning an array is easy enough, and I presume you mean I should create an array controller of class Job, not Folder, since Folders are represented by a tree controller. Trying it out, everything works as it's supposed to... except deletion and refreshing*, both of which I suspect relate to the next point.


*adding works (albeit clumsily) by having a second Job array controller in entity mode, bound to FolderTreeController.selection.jobs. The tableview doesn't refresh when a job is added, but at least it shows up when refreshed manually, which is enough to tell me that my allDescendantsJobs code works fine. Deleting is worse. In leaf node Folders it works fine (with the same refresh problem as adding), but I can't delete Jobs from a Folder's children, and worse, if a Folder has both Jobs and children, the Job selection onscreen does not match the selection in the array controller; the latter is one of only those jobs in the Folder. But given what's below, you probably already knew that would happen. ;)

You have another problem, though. Your NSManagedObject subclass is not (by the code you've sketched) KVO compliant for the 'allDescendentsJobs' property, so if you're expecting the table view to update when the jobs change at some level, it won't.

I read over the Ensuring KVO compliance docs, and I have to say, I don't think I understand it. At first glance it looks fine to me, but obviously it's not. Do I have to implement mutableSet/ ArrayValueForKey: myself, or am I completely on the wrong track?


-Daniel _______________________________________________

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: Fun (or not) with NSArrayControllers and CoreData.
      • From: Quincey Morris <email@hidden>
References: 
 >Fun (or not) with NSArrayControllers and CoreData. (From: Daniel DeCovnick <email@hidden>)
 >Re: Fun (or not) with NSArrayControllers and CoreData. (From: Quincey Morris <email@hidden>)

  • Prev by Date: Re: Cahnging bgColor of a UIView not working.
  • Next by Date: Re: something I can't understand
  • Previous by thread: Re: Fun (or not) with NSArrayControllers and CoreData.
  • Next by thread: Re: Fun (or not) with NSArrayControllers and CoreData.
  • Index(es):
    • Date
    • Thread