NSMutableArray Setter和Getter方法

时间:2014-06-05 05:29:59

标签: ios iphone objective-c

我正在尝试制作FoodCourt应用程序。我在AppDelegate.h中有3个MutableArray

//这是数组的声明和Getter和Setter方法。

AppDelegate.h

@property(strong,nonatomic)NSMutableArray* NameArray;
@property(strong,nonatomic)NSMutableArray* QtyArray;
@property(strong,nonatomic)NSMutableArray* KGArray;


-(NSMutableArray*)GetNameNSO;
-(NSMutableArray*)GetQtyNSO;
-(NSMutableArray*)GetKGNSO;
-(void)setNameArray:(NSMutableArray*)NameArray;
-(void)setQtyArray:(NSMutableArray*)QtyArray;
-(void)setKGArray:(NSMutableArray*)KGArray;

我在AppDelegate.m中实现了Getter和Setter方法

Appdelegate.m

@synthesize NameArray =_NameArray;
@synthesize KGArray =_KGArray;
@synthesize QtyArray=_QtyArray;


-(NSMutableArray*)GetNameNSO
{
    if(_NameArray == nil)
    {
        _NameArray = [[NSMutableArray alloc]init];
        NSLog(@"%@ GetName FROM HELPER",_NameArray);
        return _NameArray;
    }
    else
    {
        return _NameArray;
    }


}
-(NSMutableArray*)GetQtyNSO
{
    if(_QtyArray == nil)
    {
        _QtyArray = [[NSMutableArray alloc]init];
        NSLog(@"%@ GetQTY FROM HELPER",_QtyArray);
        return _QtyArray;
    }
    else
    {
        return _QtyArray;
    }
}
-(NSMutableArray*)GetKGNSO
{
   if(_KGArray == nil)
   {
        _KGArray = [[NSMutableArray alloc]init];
        NSLog(@"%@ GetKG FROM HELPER",_KGArray);
        return _KGArray;
    }
    else
    {
        return _KGArray;
    }
}
-(void)setQtyArray:(NSMutableArray *)QtyArray{

    _QtyArray=QtyArray;
    NSLog(@"%@ SetQty FROM HELPER",_QtyArray);
}
-(void)setNameArray:(NSMutableArray *)NameArray
{
    _NameArray =NameArray;
    NSLog(@"%@ SetName FROM HELPER",_NameArray);
}
-(void)setKGArray:(NSMutableArray *)KGArray
{
    _KGArray =KGArray;
    NSLog(@"%@ SetKG FROM HELPER",_KGArray);
}

Setter Methods可以正常工作。我在这个setter方法中从FoodController.h设置我的值,它给我带有方法中所有值的完美日志。

FoodController.h

AppDelegate *AppAdd;


AppAdd = [[AppDelegate alloc]init];

[AppAdd setNameArray:NameSegue];
[AppAdd setKGArray:KGQtySegue];
[AppAdd setQtyArray:QtySegue];

以上代码在 prepareForSegue 方法中调用。更改我的应用程序视图后,我试图从OrderDetails.m中的Getter方法获取此数据但它给出null或没有值。我只是不明白为什么这些方法不能正常工作。这是OrderDetails.m文件的代码。

OrderDetails.m

AppDelegate *sc;

sc=[[AppDelegate alloc]init];

[DataName addObjectsFromArray:sc.GetNameNSO];
[DataQty addObjectsFromArray:sc.GetQtyNSO];
[DataQty addObjectsFromArray:sc.GetKGNSO];

我只是不明白为什么这段代码不起作用,请帮帮我!谢谢。

获取数组的新代码:

AppDelegate *sc = (AppDelegate *)[UIApplication sharedApplication].delegate;
sc=[[AppDelegate alloc]init];

[DataName addObjectsFromArray:sc.GetNameNSO];
[DataQty addObjectsFromArray:sc.GetQtyNSO];
[DataQty addObjectsFromArray:sc.GetKGNSO];

1 个答案:

答案 0 :(得分:3)

您不应该创建App委托的对象。你应该通过以下方式获得它。

AppDelegate *sc = (AppDelegate *)[UIApplication sharedApplication].delegate;
[DataName addObjectsFromArray:sc.GetNameNSO];
[DataQty addObjectsFromArray:sc.GetQtyNSO];
[DataQty addObjectsFromArray:sc.GetKGNSO];

现在,sc将具有所需的值。不要忘记将Appdelegate.h文件导入orderdetails.m文件。