Массив не заполняется новыми данными - PullRequest
0 голосов
/ 21 июня 2011

В моем приложении я использую массив, чтобы получить некоторые данные внутри метода, но каждый раз после добавления объекта в массив я проверяю его содержимое, затем всегда он показывает мне 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 голосов
/ 21 июня 2011

Я знаю, что вы создаете экземпляр своего массива в viewDidLoad, но что произойдет, если вы добавите его в начале метода -(void)searchImagesInCategory:(NSString *)string:

imageName = [[NSMutableArray alloc] init];
0 голосов
/ 21 июня 2011

Поскольку вы объявили объект в своем заголовочном файле как неатомарное сохранение, затем синтезировали и распределили его в своей реализации, вам не нужно сохранять его каждый раз, когда вы добавляете что-то к нему. Вы должны попробовать удалить [imageName retain];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...