如何将一个数组添加到另一个数组中?问题是我在不同的“插槽”中多次插入此数组,但是我插入的数组发生了变化,因此我得到一个数组,每个字段看起来都相同。
是否有选项可以获取数组1的内容并将整个内容放入数组2的一个字段中?
我认为问题在于数组看起来像这样:
NSMutableArray * bigArray = [
0:dynamicArray
1:dynamicArray
2:dynamicArray
3:dynamicArray
而不是:
NSMutableArray * bigArray = [
0:contentOfDynamicArray
1:contentOfDynamicArray
2:contentOfDynamicArray
3:contentOfDynamicArray
我的代码:
twoDArray = [[NSMutableArray alloc] init];
cat1 = [[NSMutableArray alloc] init];
for (int k = 0; k < [noDuplicatesCat count]; k++) {
NSLog(@"cat1: %@", cat1);
[cat1 removeAllObjects];
for (int i = 0; i < [parseJSONArray count]; i++) {
NSMutableArray *temp;
[temp removeAllObjects];
temp = [[NSMutableArray alloc] init];
temp = [parseJSONArray objectAtIndex:i];
if ([[temp valueForKey:@"category"] isEqual:[noDuplicatesCat objectAtIndex:k]]){
NSLog(@"equal");
[cat1 addObject:temp];
} else {
NSLog(@"not equal");
}
}
[twoDArray addObject:cat1];
NSLog(@"2dArray: %@", twoDArray);
}
答案 0 :(得分:1)
- (void)replaceObjectsInRange:(NSRange)range withObjectsFromArray:(NSArray *)otherArray;
另外,你的代码有点疯狂。不要使用'i'和'k'作为变量名,实际上描述了你有哪种索引。这个:
NSMutableArray *temp;
[temp removeAllObjects];
temp = [[NSMutableArray alloc] init];
temp = [parseJSONArray objectAtIndex:i];
没有任何意义。第二行从未初始化的变量中删除所有对象,该变量不执行任何操作。第三个创建它,这很好,但第四个会覆盖你刚刚创建的东西。
答案 1 :(得分:0)
谢谢,我刚刚找到了一个可能的解决方案:[bigarray addObject:[NSMutableArray arrayWithArray:smallaray]];
答案 2 :(得分:0)
根据parseJSONArray
的[唯一]类别,您似乎试图按记录的category
字段拆分大记录数组noDuplicatesCat
。生成的twoDArray
与noDuplicatesCat
具有相同的顺序。
以下是缩减版:
NSMutableArray *twoDArray = [[NSMutableArray alloc] init];
for (id category in noDuplicatesCat) {
NSMutableArray *cat1 = [[NSMutableArray alloc] init];
[twoDArray addObject:cat1];
for (id item in parseJSONArray)
if ([[item valueForKey:@"category"] isEqual:category])
[cat1 addObject:item];
}
答案 3 :(得分:0)
你的代码有很多问题,但我不想苛刻你。 感谢你跳进来并试图学习一些东西,也是为了 把你的代码放在那里。我要尝试重写你的内容 完成基于我非常对你正在尝试的内容的有限理解 要做。
首先,一些线索:
temp = [parseJSONArray objectAtIndex:i]
// and
if ([[temp valueForKey:@"category"] ...
让我相信parseJSONArray
是NSDictionary
的数组。
您可能应该使用-[NSDictionary objectForKey:]
,例如
NSDictionary *temp = [parseJSONArray objectAtIndex:i]
// and
if ([[temp objectForKey:@"category"] ...
我还打赌[temp objectForKey:@"category"]
会返回NSString
。
如果这些假设是正确的,这看起来就像你想要做的那样:
// NSArray *noDuplicatesCat = <array of strings>
NSMutableArray *arrayOfArrayOfJSONDicts = [NSMutableArray array];
for (NSString *cat in noDuplicatesCat) {
NSMutableArray *gather = [NSMutableArray array];
for (NSDictionary *jsonDict in parseJSONArray) {
if ([jsonDict objectForKey:@"category"] isEqualToString:cat]) {
[gather addObject:jsonDict];
}
}
[arrayOfArrayOfJSONDicts addObject:gather]
}
我不确定服务的用途是什么。如果你告诉我们,它可能是有用的或有趣的, 在更高的层次上,你想要实现的目标。以某种方式防止重复?你可以编辑你的 问题是添加一个附录。
无论如何,鉴于我现在所看到的,你真的需要打书以避免
现在把自己编程成一个完整的混乱。我建议玩很多东西
NSArray
和NSDictionary
,直到你真正明白自己在做什么为止。祝你好运!