我正在尝试从另一个类向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
答案 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;