簡體   English   中英

如何將可變數組的對象以數組的形式存儲到另一個可變數組中。

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM