繁体   English   中英

核心数据NSManagedObject生成的函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM