I have come to a roadblock in my current project. I basically have an app that is much like the Core Data Recipe app... Here is the basic structure I have in my .xcdatamodel
If you want to call a method like "-addCatagoryObject:" on your NSManagedObject subclass, you have to have the code for that method in your actual .m file - it is NOT generated at runtime.
HOWEVER, it can be generated for you semi-automatically by Xcode - look for the various menu items that allow you to copy method definitions and implementations in Xcode.
Most people skip these nowadays, you don't NEED to call -addCategoryObject:, you can just let the runtime generate accessor code for you.
First off, your variable name (in the header and in your model) should be "categories", not "category", since it's representing a set, not a singleton.
You can then set categories to any set you want, using something like:
restaurant.categories = [NSSet setWithObjects:category1, category2, nil];