我有一个NSMutable
数组,其中包含一些对象,我想将这些对象以不同数组的形式存储到不同的Mutable数组中。
例如:我有一个名为sessionArrayType4的数组,它包含这些对象。
"New Attendee Reception",
"Attendee Reception",
"Banquett",
"Tour and BBQ"
我想存储在名为globalSessionArray的另一个Mutable数组中,我期待结果如下所示。
(("New Attendee Reception"), ("Attendee Reception"), (Banquett), (Tour and BBQ))
这是我的代码:
if(self.pickerSelectedRow == [self.typePickerArray objectAtIndex:3])
{
for (int i =0; i< [self.sessionArrayType4 count]; i++)
{
if(self.displayTime == [[self.sessionArrayType4 objectAtIndex:i]valueForKey:@"start_time"])
{
[self.sessionRowArray addObject:[[self.sessionArrayType4 objectAtIndex:i]valueForKey:@"session_name"]];
self.rowCount = self.rowCount + 1;
}
else
{
[self.sessionRowArray removeAllObjects];
self.displayTime = [[self.sessionArrayType4 objectAtIndex:i] valueForKey:@"start_time"];
[self.sessionRowArray addObject:[[self.sessionArrayType4 objectAtIndex:i]valueForKey:@"session_name"]];
[self.globalSessionArray addObject:self.sessionRowArray];
}
}
}
但我得到的输出是这样的:
((Tour and BBQ), (Tour and BBQ), (Tour and BBQ), (Tour and BBQ))
答案 0 :(得分:1)
对于for循环的每次迭代,你将不得不将你的值分配/初始化为一个对象,否则它会不断地粘在内存中并覆盖自己。
if(self.pickerSelectedRow == [self.typePickerArray objectAtIndex:3])
{
NSArray *
for (int i =0; i< [self.sessionArrayType4 count]; i++)
{
NSObject *myNewObject = [[NSObject alloc] init];
if(self.displayTime == [[self.sessionArrayType4 objectAtIndex:i]valueForKey:@"start_time"])
{
myNewObject = [[self.sessionArrayType4 objectAtIndex:i]valueForKey:@"session_name"];
[self.sessionRowArray addObject: myNewObject];
self.rowCount = self.rowCount + 1;
}
else
{
[self.sessionRowArray removeAllObjects];
//NSLog(@"%@",self.sessionRowArray);
self.displayTime = [[self.sessionArrayType4 objectAtIndex:i] valueForKey:@"start_time"];
myNewObject = [[self.sessionArrayType4 objectAtIndex:i]valueForKey:@"session_name"]];
[self.sessionRowArray addObject:myNewObject];
// NSLog(@"%@",self.sessionRowArray);
[self.globalSessionArray addObject:self.sessionRowArray];
// NSLog(@"%@",self.globalSessionArray);
}
}
}
答案 1 :(得分:1)
您需要在for循环中分配一个临时数组,以获得最终的数组数组。
代码非常令人困惑,但您可以像下面这样修改以获得正确的结果:
if(self.pickerSelectedRow == [self.typePickerArray objectAtIndex:3])
{
for (int i =0; i< [self.sessionArrayType4 count]; i++)
{
if(self.displayTime == [[self.sessionArrayType4 objectAtIndex:i]valueForKey:@"start_time"])
{
[self.sessionRowArray addObject:[[self.sessionArrayType4 objectAtIndex:i]valueForKey:@"session_name"]];
self.rowCount = self.rowCount + 1;
}
else
{
[self.sessionRowArray removeAllObjects];
NSMutableArray* tempArray = [[NSMutableArray alloc] init];
//NSLog(@"%@",self.sessionRowArray);
self.displayTime = [[self.sessionArrayType4 objectAtIndex:i] valueForKey:@"start_time"];
[tempArray addObject:[[self.sessionArrayType4 objectAtIndex:i]valueForKey:@"session_name"]];
// NSLog(@"%@",self.sessionRowArray);
[self.globalSessionArray addObject:tempArray];
// NSLog(@"%@",self.globalSessionArray);
}
答案 2 :(得分:0)
1)
if(self.pickerSelectedRow == [self.typePickerArray objectAtIndex:3])
这个表达式和类似的表达看起来不正确,因为左边的值看起来像int或NSInteger而右边的值是NSObject。如果它们都是NSObjects,则使用isEqual代替。
2)
sessionArrayType4
这是正确的,但没有严肃的程序员将这些名称用于变量。
3)由于代码不完整和许多NSLog调用,很难理解你想要什么。您还添加了JSON代码,该代码与前一部分代码特别不兼容。
首先编辑代码