невозможно добавить данные в окне выбора через nsmutablearray - PullRequest
0 голосов
/ 31 марта 2011

Я загружаю данные из базы данных в nsmutableaaray

-(void)SeoPickerData
{

    self.pickerArray = [[NSMutableArray alloc] init];
    {
        const char *sql = "select * from Main";
        sqlite3_stmt *selectStatement;

        int returnValue = sqlite3_prepare_v2(database1, sql, -1, &selectStatement, NULL);
        if(returnValue == SQLITE_OK)

        {
            //loop all the rows returned by the query.
            while(sqlite3_step(selectStatement) == SQLITE_ROW)
            {
                //int   key = sqlite3_column_int(selectStatement, 0);
                NSString    *Term   = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectStatement, 2)];

                Container *myObject=[[Container alloc] InitWithTermId:Term];
                [self.pickerArray addObject:myObject];
                [myObject release];
            }
        }
        else
        {
            printf( "could not prepare statemnt: %s\n", sqlite3_errmsg(database1) );
        }

    }

}

, и я копирую данные в массив с другим массивом, подобным этому

localArray = [[NSMutableArray alloc] init];

Container *classObj = [[Container alloc] init];

[classObj.seoArray removeAllObjects];

[classObj SeoPickerData];

//[localArray addObject:@"Red"];

self.localArray = classObj.pickerArray;

[self.view addSubview:pickerView];

, когда массив загружается в функции uipickerview, какэто

- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component

{

    return [localArray objectAtIndex:row];

}

ошибка накоплена, как я могу добавить элементы в представлении uipicker?

1 Ответ

0 голосов
/ 31 марта 2011

Вот возможная ошибка:

NSString    *Term   = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectStatement, 2)];

Container *myObject=[[Container alloc] InitWithTermId:Term];
[self.pickerArray addObject:myObject];
[myObject release];

Вы добавляете Container объекты в массив.

- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    return [localArray objectAtIndex:row];
}

Затем вы возвращаете объект Container, когда ожидаете возврата NSString.

...