簡體   English   中英

無法在NSmutable數組中添加NSmutableDictionary

[英]Unable to add NSmutableDictionary in NSmutable Array

無法在NSmutableArray中添加NSmutableDictionary,activityFeedArray是可變數組,並在頭文件中初始化。

            NSMutableDictionary *dummyitem = [[NSMutableDictionary alloc]init];
            NSMutableDictionary *dummyitem2 = [[NSMutableDictionary alloc]init];
            NSMutableDictionary *dummyitem3 = [[NSMutableDictionary alloc]init];

            [dummyitem setObject:@"No Data Found" forKey:@"text"];
            [dummyitem2 setValue:dummyitem forKey:@"Title"];
            [dummyitem3 setObject:dummyitem2 forKey:@"ItemInfo"];

            NSLog(@"%@",dummyitem3);

            //dummyitem3 logs correct value here             

            if ([activitiesFeedArray count] == 0) 
            { 
                NSLog(@"%@",dummyitem3);
                //dummyitem3 logs correct value here
                [activitiesFeedArray addObject:dummyitem3];
                NSLog(@"%@",activitiesFeedArray);
                //activitiesFeedArray logs null value here
            }

查看負載

    (void)viewDidLoad
{
   [super viewDidLoad];
   activitiesFeedArray = [[NSMutableArray alloc]init];
}

頭文件

@interface SearchViewController : UIViewController <UISearchBarDelegate ,UITableViewDelegate , UITableViewDataSource>
{
  NSMutableArray *activitiesFeedArray;
}
@end

您沒有提到該代碼在哪里,但是它顯然在viewDidLoad之前運行了一段時間,因此該數組仍然為零。

如果這是您僅有的代碼,則它應該可以正常工作,並且NSMutableArray的NSLog不應返回nil。 我在XCode上復制並粘貼了您的代碼,它可以完美地工作。 您必須在代碼中的其他地方做一些更改NSMutableArray的操作。


如果您好奇如何證明您的代碼有效,我創建了一個帶有一個按鈕的簡單UIViewController。 然后,我創建了一個UIViewController類,並從字面上將您的代碼復制到了頭文件和實現文件中。 我在頭文件中聲明了NSMutableArray,並在viewdidload中對其進行了初始化(我原樣復制並粘貼了它們)。 我還將其余的NSMutableDictionary代碼放在viewDidLoad中,它產生了明智的結果。 NSMutableArray日志顯示它包含正確的數據。

有時它有助於完成一個干凈的構建,但是據我所知,您的代碼是正確的,應該可以運行。

順便說一句,我有IOS5和XCode 4.2。

替換[dummyitem2 setValue:dummyitem forKey:@“標題”]; 與[dummyitem2 setObject:dummyitem forKey:@“ Title”]一起使用;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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