#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 но он не хранит в массиве только последнее сохраненное значение