[英]How to store objects of a mutable Array into another mutable array in form of arrays.?
我有一個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))
對於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);
}
}
}
您需要在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);
}
1)
if(self.pickerSelectedRow == [self.typePickerArray objectAtIndex:3])
這個表達式和類似的表達式看起來不正確,因為左邊的值看起來像int或NSInteger而右邊的值是NSObject。 如果它們都是NSObject,則使用isEqual代替。
2)
sessionArrayType4
它是正確的,但沒有嚴肅的程序員使用這些名稱的變量。
3)由於代碼不完整和許多NSLog調用,很難理解你想要什么。 您還添加了JSON代碼,該代碼與前一部分代碼特別不兼容。
所以先編輯代碼
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.