与访问者的类型不匹配

时间:2013-01-29 21:15:40

标签: ios objective-c

我正在尝试为我的iPhone应用程序构建存储类。存储类用于存储食品订单列表,每个订单都有食品名称和价格。在应用程序中,当我按下食物菜单上的按钮时,我想将它按顺序存储到名为 orders 的二维数组中。我是Java用户,是Objective-C的新用户。我想要构建的是一个类似于java的ArrayList类的存储类,而Storage.m类包含食物名称和价格。

我已经有了一些代码,但它会出现这个错误:“我的Storages.h类中的属性'orders'类型与访问者'setOrder'的类型不匹配。

storage.h定义

#import <Foundation/Foundation.h>

@interface Storage : NSObject{
    NSString *name;
    NSInteger *price;
}
@property (nonatomic)NSString *name;
@property (nonatomic)NSInteger *price;


@end

Storage.m

 #import "Storage.h"

 @implementation Storage


 @synthesize name;
 @synthesize price;


@end

Storages.h

#import <Foundation/Foundation.h>
#import "Storage.h"
@interface Storages : NSObject{
    Storage *order;
    NSMutableArray *orders;

@property (nonatomic) NSMutableArray *orders; // error "Type of property 'orders' does not match type of accessor 'setOrder'"

-(void) setOrders:(Storage *)order;
-(NSMutableArray *) orders;
@end

Storages.m

#import "Storages.h"

@implementation Storages
@synthesize orders;

-(void) setOrders:(Storage *)oneOrder{  

    [orders addObject: oneOrder];
}
-(NSMutableArray *) orders;{
    return orders;
}
@end

3 个答案:

答案 0 :(得分:0)

由于您有一个名为“orders”的属性,函数“setOrders”将覆盖该属性的setter方法。因此,要使其工作,您必须将setOrders:function的名称更改为addOrder :(存储*)订单。

答案 1 :(得分:0)

首先,您的Storage.h中有一个挂起的“{”。你需要结束这个。

其次,当您创建属性时,它会自动为其创建一个setter和一个getter。所以在这种情况下,setter被称为setOrders你要覆盖它(说你想自己实现它)。在代码中更改setOrders的名称,您应该没问题。

答案 2 :(得分:0)

尝试检查xib文件和链接过程的插座:它们应该有不同的名称。