0

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

我已经有一些代码,但它一直显示这个错误:“我的 Storages.h 类中的“属性'orders'的类型与访问器'setOrder'的类型不匹配”。

存储.h

#import <Foundation/Foundation.h>

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


@end

存储.m

 #import "Storage.h"

 @implementation Storage


 @synthesize name;
 @synthesize price;


@end

存储.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

存储.m

#import "Storages.h"

@implementation Storages
@synthesize orders;

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

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

3 回答 3

1

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

于 2013-01-29T21:24:08.590 回答
0

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

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

于 2013-01-29T21:25:13.847 回答
0

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

于 2014-06-26T19:55:29.540 回答