【发布时间】:2010-12-12 18:06:07
【问题描述】:
我有下面给出的管理对象;以下为 initFruitStand 方法中的 addCratesObject 引发的警告。为什么它抱怨它不匹配签名虽然它匹配?有什么问题?
在函数中 '-[FruitStandViewController initFruitStand:]':
'FruitStand' 可能不会响应 -addCratesObject:
'(没有匹配方法签名的消息将被 假定返回 'id' 并接受 '...' 作为参数。)
MyViewController.m
#import "FruitStand.h"
#import "Crate.h"
- (IBAction) initFruitStand: (id) sender {
FruitStand * stand = (FruitStand *) [NSEntityDescription
insertNewObjectForEntityForName:@"FruitStand"
inManagedObjectContext:self.managedObjectContext];
Crate * crateOne = (Crate *) [NSEntityDescription
insertNewObjectForEntityForName:@"Crate"
inManagedObjectContext:self.managedObjectContext];
[stand addCratesObject:crateOne];
}
FruitStand.h
#import <CoreData/CoreData.h>
@class Crate;
@interface FruitStand : NSManagedObject
{
}
@property (nonatomic, retain) NSString* standName;
@property (nonatomic, retain) NSSet* crates;
@end
@interface FruitStand (CoreDataGeneratedAccessors)
- (void)addCratesObject:(Crate *)value;
- (void)removeCratesObject:(Crate *)value;
- (void)addCrates:(NSSet *)value;
- (void)removeCrates:(NSSet *)value;
@end
FruitStand.m
#import "FruitStand.h"
#import "Crate.h"
@implementation FruitStand
@dynamic standName;
@dynamic crates;
@end
Crates.h
#import <CoreData/CoreData.h>
@interface Crate : NSManagedObject
{
}
@property (nonatomic, retain) NSSet* fruits;
@end
@interface Crate (CoreDataGeneratedAccessors)
- (void)addFruitsObject:(NSManagedObject *)value;
- (void)removeFruitsObject:(NSManagedObject *)value;
- (void)addFruits:(NSSet *)value;
- (void)removeFruits:(NSSet *)value;
@end
Crates.m
#import "Crate.h"
@implementation Crate
@dynamic fruits;
@end
【问题讨论】:
-
虽然我看不出您需要这样做的原因,但请尝试在 FruitStand.h 界面中导入您的 Crate.h 标头,而不是使用 @class 声明。
-
数据建模者以这种方式创建它们。
标签: iphone xcode core-data nsmanagedobject