无法从另一个类向NSMutableArray添加对象

时间:2015-03-24 11:04:28

标签: ios objective-c

我正在尝试从另一个类向NSMutableArray添加对象,但它无法正常工作。它完全适用于其他属性。

我查看了类似的问题,但找不到合适的答案。

对象iPack:

@interface IPack : NSObject

     @property float price;
     @property NSMutableArray *cocktails;

@end

在我的集合视图的类中:

- (void)viewDidLoad {
    [super viewDidLoad];

    self.iPack = [[IPack alloc] init];
    self.iPack.cocktails = [[NSMutableArray alloc] init];

在我的班级中:

self.collectionView.iPack.price = self.price //perfectly works

NSArray* cock = [NSArray arrayWithObjects:c1,c2,c3,c4,c5, nil];
[self.collectionView.iPack.cocktails addObjectsFromArray:cock]; //line won't work

2 个答案:

答案 0 :(得分:3)

您还没有显示[IPack init]方法,但我强烈怀疑您没有分配cocktails数组。简单地将其定义为属性并不意味着它被自动分配:

@implementation IPack

- (instancetype)init
{
    self = [super init];
    if (self) {
        _price = 0.0f;
        _cocktails = [NSMutableArray new];
    }
    return self;
}

@end

修改

我刚刚在你的问题中看到过这一行:

self.iPack.cocktails = [[NSMutableArray alloc] init];

这表明我的答案是错误的(尽管它是做同样事情的更好方法)。对于那个很抱歉;我不明白为什么你的代码不起作用。你确定你正确检查了吗?

答案 1 :(得分:0)

试试这个,

IPack类中添加方法

@interface IPack : NSObject

     @property float price;
     @property NSMutableArray *cocktails;
     - (instancetype)initWithPrice:(float)price cocktails:(NSMutableArray *)cocktails;
@end

并在实施中

@implementtion IPack

- (instancetype)initWithPrice:(float)price cocktails:(NSMutableArray *)cocktails {

    self = [super init];
    if (self) {
        self.price = price;
        self.cocktails = cocktails;
    }
}

@end

在我的集合视图的类中:

删除viewDidLoad中的alloc init 即删除以下行

self.iPack = [[IPack alloc] init];
self.iPack.cocktails = [[NSMutableArray alloc] init];

在我的班级中:

NSArray* cock = [NSArray arrayWithObjects:c1,c2,c3,c4,c5, nil];
IPack *ipack = [[IPack alloc] initWithPrice:self.price cocktails:[NSMutableArray arrayArray:cock]];
self.collectionView.iPack = ipack;