Как загрузить значения uipickerview из базы данных в iphone?

#iphone

#iPhone

Вопрос:

Я хочу загрузить данные в uipickerview из базы данных. это мой код

 if (sqlite3_prepare_v2(UsersDB, query_stmt, -1, amp;statement, NULL) == SQLITE_OK)
{
int i=0;
while (sqlite3_step(statement) == SQLITE_ROW)
{
NSLog(@"select");
self.coun=[[NSString alloc] initWithUTF8String:(char *)sqlite3_column_text(statement, 0)];
 NSLog(@"Coun = %@",coun);

self.animals=[coun componentsSeparatedByString:@":"];
NSLog(@"String value=%@",self.animals);
} 
sqlite3_finalize(statement);
} else
{
NSLog(@"not select");
}
  

и код действий кнопки

 - (IBAction)selectAnItem:(UIControl *)sender {
//Display the ActionSheetPicker
[ActionSheetPicker displayActionPickerWithView:sender data:self.animals selectedIndex:self.selectedIndex target:self action:@selector(itemWasSelected::) title:@"Select Country"];
}
  

но он запускает загрузку только последнего значения. Не все значения загружены в UIPickerView. Как загрузить все значения из базы данных, используя этот код. Кто-нибудь, пожалуйста, помогите мне. Заранее спасибо.

Комментарии:

1. Wat — это объект ur animals, это массив tat. И каким будет значение coloum вашей базы данных?

2. animals — это NSArray. coun — это NSString

3. Все значения ur animals хранятся в виде одной строки в базе данных ur. Например, animal1:anilmal2:animal3

4. да, все значения r печатаются в консоли. но последнее значение загружается только в uipickerview.

5. я хочу добавить строковые значения в NSArray

Ответ №1:

Вы должны сделать так,

 NSArray *splitedString = [coun componentsSeparatedByString: @":"];
NSString *animalName;
if ([splitedString count]>0)
{
        animalName=[splitedString objectAtIndex:0];
        [self.animals addObject:animalName]; //here animals should be NSMutableArray 
}
  

Комментарии:

1. здесь animal — это NSArray. bcz — (IBAction)selectAnItem:(UIControl *)отправитель { //Отобразить ActionSheetPicker [ActionSheetPicker displayActionPickerWithView:данные отправителя:self.animals Выбранный индекс:self.Цель выбранного индекса:self action:@selector (itemWasSelected::) заголовок:@»Выберите страну»]; } В нем есть только NSArray

2. Я думаю, что NSMutableArray можно передать для NSArray.

3. Почему я говорю animals array как изменяемый массив, потому что содержимое массива должно добавляться динамически

4. Я передал NSMutableArray для аргумента, который нужен NSArray.Bcz NSMutableArray является подмножеством только NSArray

5. k изменяемый массив данных, используемый в приведенном выше actionpicker как использовать, пожалуйста, помогите мне

Ответ №2:

В while цикле вы должны собрать все self.coun значения в массив. Когда вы выйдете из цикла, имея все значения, заполните средство выбора.

 NSMutableArray *countries = [[NSMutableArray alloc] init];


while (sqlite3_step(statement) == SQLITE_ROW){
    self.coun=[[NSString alloc] initWithUTF8String:(char *)sqlite3_column_text(statement, 0)];
    NSLog(@"Coun = %@",coun);
    [countries addObject:coun];    
    //self.animals=[coun componentsSeparatedByString:@":"];

    //NSLog(@"String value=%@",self.animals);
} 
// Now you can use countries to populate in picker.
  

Вы должны реализовать источник данных и делегаты для UIPickerView.

Кажется, вы храните страны в БД, считывая данные из БД, которые вы назначаете в self.animals. Это как бы не соответствует именам переменных. И почему ваш синтаксический анализ выполняется с помощью «:»?

Комментарии:

1. это мой вывод на консоль 2011-10-13 16:52:54.688 Aapkeapps[3381:207] выберите 2011-10-13 16:52:54.689 Aapkeapps[3381:207] Страна = Индия 2011-10-13 16:52:54.690 Aapkeapps[3381:207] Строковое значение = (Индия) 2011-10-13 16:52:54.690 Aapkeapps[3381:207:207] выберите 2011-10-13 16:52:54.691 Aapkeapps[3381:207] Страна = Америка 2011-10-13 16:52:54.692 Aapkeapps[3381:207] Строковое значение= (Америка) 2011-10-13 16:52:54.692 Aapkeapps[3381:207] выберите 2011-10-13 16:52:54.693 Aapkeapps[3381 :207] Страна = Англия 2011-10-13 16:52:54.694 Aapkeapps[3381:207] Строковое значение = (Англия) Bt загружает только один массив значений n

2. Каковы столбцы вашей базы данных и их содержимое?

3. Имя столбца — «Название страны», содержимое — Индия, Америка, Англия

4. Затем замените страны <-> животные. Я бы предпочел, чтобы страны именовали переменные, а не животных: (

5. k но он не хранит в массиве только последнее сохраненное значение