Основные данные NSManagedObject сгенерированные функции - PullRequest
0 голосов
/ 04 августа 2011

У меня проблемы с пониманием того, как использовать мои основные данные, сгенерированные NSManagedObject.

Category.h:

@class Product;

@interface Category : NSManagedObject {
@private
}
@property (nonatomic, retain) NSString * mName;
@property (nonatomic, retain) NSSet* mProduct;
@end

Category.m:

#import "Category.h"
#import "Product.h"

@implementation Category
@dynamic mName;
@dynamic mProduct;


- (void)addMProductObject:(Product *)value {    
    NSSet *changedObjects = [[NSSet alloc] initWithObjects:&value count:1];
    [self willChangeValueForKey:@"mProduct" withSetMutation:NSKeyValueUnionSetMutation usingObjects:changedObjects];
    [[self primitiveValueForKey:@"mProduct"] addObject:value];
    [self didChangeValueForKey:@"mProduct" withSetMutation:NSKeyValueUnionSetMutation usingObjects:changedObjects];
    [changedObjects release];
}

- (void)removeMProductObject:(Product *)value {
    NSSet *changedObjects = [[NSSet alloc] initWithObjects:&value count:1];
    [self willChangeValueForKey:@"mProduct" withSetMutation:NSKeyValueMinusSetMutation usingObjects:changedObjects];
    [[self primitiveValueForKey:@"mProduct"] removeObject:value];
    [self didChangeValueForKey:@"mProduct" withSetMutation:NSKeyValueMinusSetMutation usingObjects:changedObjects];
    [changedObjects release];
}

- (void)addMProduct:(NSSet *)value {    
    [self willChangeValueForKey:@"mProduct" withSetMutation:NSKeyValueUnionSetMutation usingObjects:value];
    [[self primitiveValueForKey:@"mProduct"] unionSet:value];
    [self didChangeValueForKey:@"mProduct" withSetMutation:NSKeyValueUnionSetMutation usingObjects:value];
}

- (void)removeMProduct:(NSSet *)value {
    [self willChangeValueForKey:@"mProduct" withSetMutation:NSKeyValueMinusSetMutation usingObjects:value];
    [[self primitiveValueForKey:@"mProduct"] minusSet:value];
    [self didChangeValueForKey:@"mProduct" withSetMutation:NSKeyValueMinusSetMutation usingObjects:value];
}


@end

Как добавить Product к Category? По умолчанию эти функции (- (void)addMProductObject:(Product *)value и т. Д.) Не отображаются, когда я пытаюсь это сделать:

Product *product = (Product*)[NSEntityDescription insertNewObjectForEntityForName:@"Product" inManagedObjectContext:[self managedObjectContext]];;
...
Category *cat = (Category*)[NSEntityDescription insertNewObjectForEntityForName:@"Category" inManagedObjectContext:[self managedObjectContext]];
...
[cat addMProductObject:product];

предупреждение: «Категория» может не отвечать на «-addMProductObject:»

Могу ли я просто объявить эти функции в Category.h, чтобы они были видны и использовать их нормально?

До xcode 4 (я думаю) эти функции были объявлены в файле .h, и я мог использовать без предупреждений. Я считаю, что функции выглядели немного иначе. Я создаю новый основной проект данных, и это ново для меня.

Ответы [ 2 ]

2 голосов
/ 04 августа 2011

Да, просто объявите их в файле .h. Я думаю, что есть способ сделать так, чтобы Xcode автоматически помещал туда объявления ...

Редактировать: Да, вы можете просто скопировать и вставить отношения из редактора модели в ваш .h файл. Источник

1 голос
/ 04 августа 2011

Прежде всего, ваш addMProductObject не определен в файле .h.Из-за этого компилятор считает, что класс Category может на него не отвечать.

Также обратите внимание на следующее:

Используете ли вы это с OS 10.7 SDK?Если да, может быть, даже если это компилятор LLVM на бета-версии iOS 5, я не проверял это, проблема может заключаться в том, что Category уже занято как имя в SDK.В Lion SDK слово Category уже определено в SDK (поскольку существуют категории классов).

Попробуйте изменить имя класса на другое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...