【问题标题】:Objective C adding items to nsmutablearray returning nil [duplicate]Objective C将项目添加到nsmutablearray返回nil [重复]
【发布时间】:2015-07-10 05:02:49
【问题描述】:

我正在尝试将 NSArray 中的项目添加到 NSMutableArray,如下所示:

for(int i = 0; i < [tableData count]; i++){
        [purchaseOrder.objects addObject:[tableData objectAtIndex:i]];
        NSLog(@"%@",[tableData objectAtIndex:i]);
    }

    NSLog(@"%@", purchaseOrder.objects);

purchaseOrder.objects 返回 nil:这是 NSLog(@"%@",[tableData objectAtIndex:i]); 返回的内容:

2015-04-30 08:57:36.510 MyApp[7055:1475885] {
    POIndex = "094 Spray Foam";
    PONumber = "ABC123/028";
}
2015-04-30 08:57:36.511 MyApp[7055:1475885] {
    POIndex = "095 Drywall";
    PONumber = "ABC124/029";
}
2015-04-30 08:57:36.511 MyApp[7055:1475885] {
    POIndex = "100 Stairs";
    PONumber = "ABC125/032";
}

我正在寻找将 PONumber 作为键和 POIndex 作为值。这是我的数组的定义方式:

主控制器:

@property NSMutableArray *objects;

细节控制器:

 NSArray *tableData = [dataSource.areaData GetPurchaseOrderItems:[NSString stringWithFormat:@"%@%@",areaPickerSelectionString,unitPickerSelectionString]];

【问题讨论】:

  • 我预计purchaseOrder.objects 尚未分配。另请查看[NSMutableArray addObjectsFromArray:]
  • if (!purschaseOrder.objects) purchaseOrder.objects = [NSMutableArray 数组];
  • @trojanfoe 如何分配purchaseOrder.objects ?
  • purchaseOrder.objects = [NSMutableArray new];
  • PurchaseOrder 对象应该在其 init 方法中执行此操作。

标签: ios objective-c


【解决方案1】:

您必须在使用前初始化 MutableArray。

在 for 循环之前编写以下代码。

if(!purchaseOrder.objects){// If Array not initialize 
    purchaseOrder.objects = [[NSMutableArray alloc]init];
}

希望对你有所帮助。

【讨论】:

  • 不应该由PurchaseObject 代替吗?
  • 可行,但现在我的 purchaseOrder 被填充为:POIndex, PONumber, POIndex, PONumber, POIndex, PONumber 如何获取 PONumber 作为键和 POIndex 作为值?
  • 你能在你的问题中添加一些日志吗?
  • @user979331 这是一个不同的问题,所以创建一个新问题。另外,如果这解决了您的问题,您不认为赞成投票是有必要的吗?
  • 我会帮助你,但如果我的回答解决了你发布的问题,请将其标记为答案并点赞。
【解决方案2】:

首先你需要分配如下的 PurchaseObjects

purchaseOrder.objects = [[NSMutableArray alloc]init];

然后使用下面的代码

NSMutableDictionary *subDict=[[NSMutableDictionary alloc]init];
for (NSDictionary *dict in tableData) {
    [subDict setValue:[dict objectForKey:@"POIndex"] forKey:[dict objectForKey:@"PONumber"]];
    [purchaseOrder.objects addObject:subDict];
}
NSLog(@"@@@@@@@purchaseOrder.objects Array is:%@",purchaseOrder.objects);

这将产生包含所需内容的字典的数组..

希望对你有帮助..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    • 2013-06-01
    相关资源
    最近更新 更多