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