2012-08-07 64 views
0

我工作的一個網站訂閱應用程序的iPhone,除其他事項外,確定是否圖像連接到一個帖子,並將其存儲在一個數組。當我運行代碼時,我的NSLog告訴我沒有任何東西被放入數組,即使它正在讀取是否存在objectAtKey:@「圖片」。以下是我的一些代碼。的iOS:無法將一個字符串存儲在數組中

從MasterView.m:

//create array containing individual "datas" 
NSArray *items = [json objectForKey:@"data"]; 

for(NSDictionary *item in items) 
{ 
    // store message in ItemStore sharedStore 
    if([item objectForKey:@"message"] || [item objectForKey:@"message"] != nil || 
     [[item objectForKey:@"message"] length] > 0){ 
     [[JSONFeedItemStore sharedStore] createItem:[item objectForKey:@"message"]]; 
    } 

    // 
    if([item objectForKey:@"picture"]){ 
     [[JSONFeedItemStore sharedStore] createPicture:[[item objectForKey:@"picture"] description]]; 
     NSLog(@"url: %@", [item objectForKey:@"picture"]); 
    } else { 
     [[JSONFeedItemStore sharedStore] createPicture:@"http://i.imgur.com/TpIK5.png"]; // blank 
     NSLog(@"creating blank picture"); 
    } 
} 

從ItemStore.m

- (void)createPicture:(NSString *)pictureUrl 
{ 
    [pictures addObject:pictureUrl]; 
    NSLog(@"Number: %d, URL: %@", [pictures count], [pictures objectAtIndex:[pictures count]]); 
} 

和我的控制檯

2012-08-07 08:21:54.153 JSONFeed[2502:f803] Number: 0, URL: (null) 
2012-08-07 08:21:54.154 JSONFeed[2502:f803] creating blank picture 
2012-08-07 08:21:54.155 JSONFeed[2502:f803] Number: 0, URL: (null) 
2012-08-07 08:21:54.156 JSONFeed[2502:f803] creating blank picture 
2012-08-07 08:21:54.157 JSONFeed[2502:f803] Number: 0, URL: (null) 
2012-08-07 08:21:54.157 JSONFeed[2502:f803] url: http://photos-a.ak.fbcdn.net/hphotos-ak-ash4/423482_427478620624383_82270372_s.jpg 
2012-08-07 08:21:54.158 JSONFeed[2502:f803] Number: 0, URL: (null) 
2012-08-07 08:21:54.158 JSONFeed[2502:f803] creating blank picture 

SharedStore是創建存儲消息的ItemStore類的一部分和來自Facebook帖子的圖片。如果您有任何問題,或需要查看更多代碼,請隨時詢問。我也正在採取任何改進建議,因爲我對編程應用程序仍然很陌生。

+0

當你去調用'createPicture'你爲什麼要送吧'[[項目objectForKey:@ 「圖片報」]描述]',而不是僅僅'[項目objectForKey:@ 「圖片報」]'? – 2012-08-07 13:30:29

+0

額外括號是因爲我正在調用該對象的描述。其餘的調用是[[item objectForKey:@「picture」] description]。 – Chance 2012-08-07 13:37:57

+0

我知道爲什麼額外支架存在,但爲什麼使用'description'? – 2012-08-07 13:38:45

回答

3

一種可能性是,pictures爲零。如果數組不存在,則不能將對象添加到數組,並且將消息發送到nil是合法的。您返回的結果也將爲零或零,因此您撥打-objectAtIndex:的電話記錄「(空)」。

+0

謝謝你,迦勒。我絕對在這個上做了一個大一的錯誤!忘記初始化陣列。 – Chance 2012-08-07 13:43:03

3

其一,當你做這樣的事;

[array objectAtIndex:[array count]]; 

你會得到一個nil對象,因爲根據定義objectAtIndex:array.count超出了數組的邊界,因爲在編程所有的數組是0索引

你需要的是

[array objectAtIndex([array count]-1)]; 
+0

或者你可以使用[數組lastObject],它更易於閱讀 – 2012-08-07 13:35:27

+0

@Dan F,雖然你的回答並不是問題的實際解決方案,但它確實指出了我的代碼中存在缺陷,所以我對它進行了升級。謝謝您的幫助! – Chance 2012-08-07 19:38:51

相關問題