ios:NSMutableArray Count在添加对象后打印零?

时间:2014-04-04 10:12:45

标签: ios iphone objective-c uitableview nsmutablearray

我的项目基于解析xml数据并将其添加到数组并显示在各自的视图中,现在我的问题是解析xml并将它们添加到nsmutablearray,如下所示:

-(void)connectionDidFinishLoading:(NSURLConnection *)connection {
    samplearray = [[NSMutableArray alloc]init];
    xmlParserObject = [[NSXMLParser alloc] initWithData:webData];
    [xmlParserObject setDelegate:self];
    [xmlParserObject parse];
     for (int i =0; i<[rssOutputData count]; i++) {
        NewsList *log = [rssOutputData objectAtIndex:i];
        feedid = log.id;
        NSLog(@"%d",feedid);
        Invit = log.newsletterdet;
        NSLog(@"%@",Invit);
         [samplearray addObject:log];
         NSLog(@"Count Final %d",[self.samplearray count]);

    }
    [[self navigationController] tabBarItem].badgeValue = mycount2;
    NSLog(@"%@",mycount2);
    [tblView reloadData];
    [connection release];

 }

以上将计数值打印为2014-04-04 15:21:10.009 cftsversion1[3087:70b] Count Final 1

但是当我在tableview方法中调用那些Count时,它会打印0所以我无法在tableview中加载数据这是我为tableview方法尝试的代码:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 2;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (section == 0)
        return [samplearray count];Prints 0 here
    NSLog(@"Count %d",[samplearray count]); Prints 0 here
    if (section == 1)
        return 1;
    return 0;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    static NSString *CellIdentifier = @"eventCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
    }

    for (UIView *view in cell.contentView.subviews) {
        [view removeFromSuperview];
    }
    if (indexPath.section == 0)
    {
        NewsList *msglist = [samplearray objectAtIndex:indexPath.row];
        cell.textLabel.text = msglist.newsletterdet;
        NSLog(@"%@",msglist.newsletterdet);
        NSInteger stat = msglist.readflag;
        if ([[SingleTonClass sinlgeTon].colorArray2 containsObject:[NSString stringWithFormat:@"%d",indexPath.row]] || stat ==  1) {
            cell.textLabel.textColor = [UIColor redColor];
        }
        else{
            cell.textLabel.textColor = [UIColor greenColor];
        }
        cell.backgroundColor = [UIColor blackColor];
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
        }
    if (indexPath.section == 1)
    {
        UIButton *viewmoreButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        viewmoreButton.frame = CGRectMake(200.0f, 5.0f, 80.0f, 30.0f);
        [viewmoreButton setTitle:@"View More"  forState:UIControlStateNormal];
        [cell addSubview:viewmoreButton];
        [viewmoreButton addTarget:self
                           action:@selector(viewMore:)
                 forControlEvents:UIControlEventTouchUpInside];
        cell.backgroundColor = [UIColor blackColor];
        [cell.contentView addSubview:viewmoreButton];

    }
    return cell;
    }

当运行上面的tableview代码时0部分没有加载因为数组计数打印0只有第1部分正在加载请帮我解决这个问题提前谢谢

2 个答案:

答案 0 :(得分:3)

在ViewDidLoad中初始化sampleArray

samplearray = [[NSMutableArray alloc]init]

确保[tblView reloadData]正常工作.Initialy表将在connectionDidFinishLoading完成之前加载,因此count将为0.仅在重新加载计数增量时。

答案 1 :(得分:0)

我怀疑你是否以错误的方式打印价值。首先尝试正确打印并更新我们:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (section == 0)
    {
       NSLog(@"Count %d",[samplearray count]);\\ Prints 0 here    
       return [samplearray count];\\Prints 0 here
    } 
    else if (section == 1)
    {
        return 1;
    }

    return 0;
}

并在.h文件中声明您的NSMutableArray,如:

@property (nonatomic, strong) NSMutableArray *samplearray;