簡體   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