[英]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.