我想獲得一個NSArray的參考,當我調用sendAsyncrhonousRequest時會通過。一旦我有了NSArray,我想將它分配給一個類屬性,但似乎我不能那樣做。分配來自匿名處理程序的數據ios
@implementation BarTableViewController {
NSArray *_jsonArray;
}
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
{
NSInteger statusCode = [(NSHTTPURLResponse *)response statusCode];
if (statusCode == 200 && data.length > 0 && error == nil)
{
NSError *e = nil;
NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData: data options: NSJSONReadingMutableContainers error: &e];
if (!jsonArray) {
NSLog(@"Error parsing JSON: %@", e);
} else {
_jsonArray = jsonArray; // this doesn't work? _jsonArray is at the class level
}
}
else if (error)
{
NSLog(@"HTTP Status: %ld", (long)statusCode);
}
else if (statusCode != 200)
{
NSLog(@"HTTP Status: %ld", (long)statusCode);
}
}];
如果我遍歷jsonArray它將正確顯示數據。如果將其分配給_jsonArray以稍後使用它,則不再返回任何數據。該數組的數量爲零。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return _jsonArray.count; // always returns zero
}
如何將jsonArray分配給類屬性,以便日後可以使用該數據?
顯示你的_jsonArray聲明是否聲明它很弱?你能顯示代碼來演示你如何嘗試讀取數組並找到它是空的嗎?它是空的還是零?另外,至少從我的經驗來看,你的詞彙有點獨特。他們通常被稱爲塊,而不是匿名處理程序;通常我們會調用一個實例變量而不是類級別,以及屬性和屬性。只是一個友好的提示。 – 2013-03-22 07:21:09
我是新來的客觀的C/IOS,所以我的行話是關閉的,對此感到遺憾。我已經更新了這個問題,並提供了您要求的內容。當numberOfRowsInSection被調用時,計數總是爲零。 – user1218776 2013-03-22 07:25:47
沒問題:)你確定它是相同的實例,它設置它與讀取它? – 2013-03-22 07:27:13