无法访问实例变量

时间:2012-04-30 17:09:54

标签: ios objective-c uitableview cocoa-touch uikit

我有一个UTableView分组。我想将我的数据拆分为“类别”组。我有一个实例变量,它包含我数据库中的所有组。

@interface TableViewController : UITableViewController {

    // Response from server
    NSString* serverResponse;
    NSMutableArray *categories;     // This NSMutableArray contains all category's server    
}

@property (strong) NSString *serverResponse;
@property (strong) NSMutableArray *categories;

我使用requestFinished方法填充我的NSMutableArray(其中所有方法都完美无缺)

- (void)requestFinished:(ASIHTTPRequest *)request
{  
    NSString *result = request.responseString;

    NSArray *jsonArray = (NSArray*)[result JSONValue];

    int count = [jsonArray count]; 
    int i;
    NSDictionary *jsonDict = [[NSDictionary alloc] init];

    for (i = 0; i < count; i++) {
        jsonDict = [jsonArray objectAtIndex:i];
        NSString *current = [jsonDict objectForKey:@"categoriy"];

        [categories addObject:current];
        NSLog(@"%d", [categories count]) // Shows 4 -> ok !
    }
}

但是当我用这种方法调用它时:

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    NSLog(@"%d", [categories count])   // Show 0 -> bad !
    return [categories count];
}

它显示在consol“0”上!

我真的不明白为什么!

也许有人可以帮我解决这个问题?

1 个答案:

答案 0 :(得分:0)

问题可能是在numberOfSectionsInTableView:被调用之前调用了requestFinished:

我认为你必须重新加载tableview。

尝试在[self.tableView reloadData]的末尾添加requestFinished:或类似内容。