[英]Using custom method to add objects to NSMutableArray Objective C
我是Objective C的新手,我正在尝试将对象添加到NSMutableArray中,以便可以在项目中多次使用。 我有一个Model类
历史记录
@interface History : NSObject
@property (nonatomic) NSString *itemName;
@property (nonatomic) int quantity;
@property (nonatomic) double total;
@property (nonatomic) NSDate *purchaseDate;
- (instancetype)initWithName: (NSString*)itemName withQuantity:(int)quantity withTotal:(double) total withPurchaseDate:(NSDate*) purchaseDate;
@end
历史记录
#import "History.h"
@implementation History
-(instancetype)initWithName: (NSString*)iName withQuantity:(int)iQuantity withTotal:(double) iTotal withPurchaseDate:(NSDate*) iPdate {
self = [super init];
if(self) {
self.itemName = iName;
self.quantity = iQuantity;
self.quantity = iQuantity;
self.purchaseDate = iPdate;
}
return self;
}
@end
储存库
#import <Foundation/Foundation.h>
@interface Repository : NSObject
@property (nonatomic) NSMutableArray *itemHistory;
-(void) pushToArray:(NSString *)name withQuantity:(int)qty withTotal:(double) total withPurchaseDate:(NSDate*) pDate;
@end
仓库
#import "Repository.h"
#import "History.h"
@interface Repository()
//@property (nonatomic) NSMutableArray *itemHistory;
@end
@implementation Repository
-(NSMutableArray *) itemHistory {
if(_itemHistory == nil) {
_itemHistory = [[NSMutableArray alloc] init];
}
return _itemHistory;
}
这是我想用来将对象添加到MutableArray的方法。
-(void) pushToArray:(NSString *)name withQuantity:(int)qty withTotal:(double) total withPurchaseDate:(NSDate*) pDate {
self.itemHistory = [[NSMutableArray alloc] init];
History *obj = [[History alloc] init];
obj.itemName = name;
obj.quantity = qty;
obj.total = total;
obj.purchaseDate = pDate;
[self.itemHistory addObject:obj];
}
@end
提前谢谢你的帮助。
每次调用pushToArray:...
您都在用一个新的,空的,可变的数组替换现有的itemHistory
。 您只会看到该数组中要推送的最后一项。
但是,您也不需要延迟初始化_itemHistory
。 只需在init
方法中创建一个实例并完成该操作即可。 避免造成混乱和重构。
在您的存储库类中,只需实现指定的初始化程序:
- (instancetype) init
{
if (self=[super init]) {
_itemHistory = [[NSMutableArray alloc] init];
}
return self;
}
取消注释该属性:
@interface Repository()
@property (nonatomic) NSMutableArray *itemHistory;
@end
并从-pushToArry:...方法中删除它:
//self.itemHistory = [[NSMutableArray alloc] init];
如果仍然无法正常工作,则需要显示如何记录故障。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.