数组未填充新数据

时间:2011-06-21 15:33:54

标签: objective-c ipad uitableview nsmutablearray reload

在我的应用程序中,我使用数组来获取方法内的一些数据,但每次将对象添加到数组后,我检查其内容然后总是它显示数组内的0个对象,之后我正在重新加载表视图但没有发生任何事情。没有事件被调用。我在这里展示我的代码:

.h文件中的

@interface ModalView:UIViewController

           <UITableViewDelegate,UITableViewDataSource,UIScrollViewDelegate> 

{

NSMutableArray *imageName;

}


@property (nonatomic,retain)NSMutableArray *imageName;
.m文件中的

: -

@synthesize imageName;

      - (void)viewDidLoad {

       [super viewDidLoad];

     imageName=[[NSMutableArray alloc] init];

        [tableView1 reloadData];

     tableView1.delegate=self;

     tableView1.dataSource=self;
}

-(void)searchImagesInCategory:(NSString *)string
{
    string1=string;

    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *documentsDirectory= [paths objectAtIndex:0];

    NSString *path=[documentsDirectory stringByAppendingPathComponent:@"1.sqlite"];


    //Open the database
    //might have to make database as property
    if(sqlite3_open([path UTF8String], &dataBase) ==SQLITE_OK)
    {
        sqlite3_stmt *statement;
        NSString *strSQL = [[NSString alloc]init];

        strSQL = @"select ImageName from tblLanguageElement where Category='";

        strSQL = [[strSQL stringByAppendingString:string1] stringByAppendingString:@"'"];

        const char *bar = [strSQL UTF8String]; 
        if(sqlite3_prepare(dataBase, bar, -1, &statement, NULL) == SQLITE_OK)
        {
            while (sqlite3_step(statement) == SQLITE_ROW) 
            {
                NSLog(@"%@",[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 0)]);
                NSString *string2=[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 0)];
              // [imageName addObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 0)]];
                NSLog(string2);
                [imageName addObject:string2];
                [imageName retain];
            }

            //tableView1.delegate=self;
            //tableView1.dataSource=self;
            [self.tableView1 reloadData];
        }
    }
    //return 1;
    //[tableView1 reloadData];
}

- (UITableViewCell *)tableView:(UITableView *)tableView1 cellForRowAtIndexPath:(NSIndexPath *)indexPath {


    static NSString *CellIdentifier = @"Cell";



    UITableViewCell *cell = [tableView1 dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {

        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];


    }

    cell.imageView.image= [UIImage imageNamed:[imageName objectAtIndex:indexPath.row]];

    return cell;
}

这是我的代码。为什么我的数组(imageName)没有获取方法中的数据以及为什么表视图没有重新加载?

2 个答案:

答案 0 :(得分:0)

由于您在头文件中将对象声明为非原子保留,然后在实现中合成并分配它,因此每次向其添加内容时都不需要保留它。您应该尝试删除[imageName retain];

答案 1 :(得分:0)

我知道你在viewDidLoad中实例化你的数组,但是如果你在方法-(void)searchImagesInCategory:(NSString *)string的开头添加它会发生什么:

imageName = [[NSMutableArray alloc] init];