[英]core data NSManagedObject generated functions
我在理解如何使用核心数据生成的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文件中声明,并且我可以使用无警告。 我相信功能看起来也有些不同。 我正在创建一个新的核心数据项目,这对我来说是新的。
是的,只需在.h文件中声明它们即可。 我认为有一种方法可以让Xcode自动将声明放在那里...
编辑:是的,您只需将关系从模型编辑器复制并粘贴到您的.h文件即可。 资源
首先,您的addMProductObject
未在.h文件中定义。 因为那个编译器认为它,Category类可能不响应它。
另外,请注意以下几点:
您是否将此与OS 10.7 SDK一起使用? 如果是的话,即使它是iOS 5 beta上的LLVM编译器,我也没有检查,问题可能是:SDK中已经将Category
作为名称。 在Lion SDK中,SDK中已经定义了Category
一词(因为存在类类别)。
尝试将类名更改为其他名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.