Если вы хотите вызвать метод наподобие "-addCatagoryObject:" в своем подклассе NSManagedObject, вам необходимо иметь код для этого метода в вашем фактическом файле .m - он НЕ генерируется во время выполнения.
ОДНАКО, он может быть сгенерирован для вас полуавтоматически XCode - ищите различные пункты меню, которые позволяют вам копировать определения методов и реализации в XCode.
Большинство людей в наши дни пропускают это, вам НЕ НУЖНО вызывать -addCategoryObject:, вы можете просто позволить среде выполнения генерировать для вас код доступа.
Во-первых, имя вашей переменной (в заголовке и в вашей модели) должно быть "категориями", а не "категорией", поскольку оно представляет набор, а не одиночку.
Затем вы можете установить категории на любой набор, используя что-то вроде:
restaurant.categories = [NSSet setWithObjects:category1, category2, nil];