2014-06-05 111 views
1

我正在尝试制作FoodCourt应用程序。我在AppDelegate.h中有3个MutableArrayNSMutableArray Setter和Getter方法

//这是数组的声明和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; 

我已经实现getter和setter方法在AppDelegate.m

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方法工作正常原样这应该。我在这个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]; 

回答

3

你不应该创建应用程序委托的对象。你应该通过下面的方式得到它。

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

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

+0

我试过你的方法。我仍然没有收到任何数据。 –

+0

@RajanPalaniya请使用您正在尝试的新代码更新您的问题 – deanWombourne

+1

[不要滥用App Delegate](http://www.hollance.com/2012/02/dont-abuse-the-app-delegate/ ) – CrimsonChris