簡體   English   中英

使用自定義方法向NSMutableArray目標C添加對象

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM