我正在尝试制作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];
答案 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文件。