托管对象方法签名

时间:2010-12-12 18:06:08

标签: iphone xcode core-data nsmanagedobject

我有下面给出的管理对象;跟随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

2 个答案:

答案 0 :(得分:1)

莱斯说; “这很奇怪,Gus。”。

尝试清理项目并重建。或者,使用“Preprocess”菜单项来显示编译器尝试为MyViewController.m编译的内容。查看编译器认为FruitStand的定义在该编译单元中的内容。

答案 1 :(得分:0)

无论如何我发现了这个问题。在另一个文件夹中有另一个版本的文件似乎被删除但仍然存在并导致警告。