Значение Bool из SQLite всегда возвращает 0 - PullRequest
1 голос
/ 27 октября 2011

В моей таблице SQLite есть столбец hasSubCountries, в котором должно храниться простое значение 0/1, потому что SQLite не имеет другого логического типа .

При копании в stackoverflow я нашел этот вопрос , но он не решил мою проблему.

В данный момент в моей базе данных есть столбец:

hasSubCountries integer DEFAULT 0

Изменили значение пары дочерних стран на 1.

И класс DBAccess Я пытаюсь прочитать значение в объект:

countryObj.hasSubCountries=(sqlite3_column_int(statement, 6) == 1);

В коде viewController:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
Country* country = [[self.countries objectAtIndex:[indexPath section]] objectAtIndex:[indexPath row]];

if(country.hasSubCountries==1)
    {

    SelectedCountry *selCountry=[[SelectedCountry alloc]initWithNibName:@"SelectedCountry" bundle:nil];
    [selCountry setTitle:@"Country"];
    [selCountry setCountryID:country.countryID];
    [self.navigationController pushViewController:selCountry animated:YES];
    [selCountry release];
    }
else
    {
    SubCountries *subCountries=[[SubCountries alloc]initWithNibName:@"SubCountries" bundle:nil];
    [subCountries setTitle:@"Sub"];
    [self.navigationController pushViewController:subCountries animated:YES];
    [subCountries release];
    }

NSLog(@"%d ... %d",country.hasSubCountries,country.countryID);
}

Ну, NSLog говорит мне, что в любом случае я получаю 0, и поэтому «если» подталкивает меня к @ «Sub». Где я ошибся?

Название и ID страны, которую я получаю без проблем.Смотрите скриншот

enter image description here

Полное определение таблицы:

enter image description here

Ответы [ 4 ]

0 голосов
/ 27 октября 2011

Простите, ребята,

Это я идиот (стыдно и прячу глаза).Извините, что потратил ваше время.Я просто забыл выбрать эти поля в моем запросе выбора SQLite.Все отлично работает.

0 голосов
/ 27 октября 2011

Не будет ли индекс столбца 7?

0 countryID
1 countryName
2lativeToContinent
3 countryFlag
4 hasRegionalIssues
5 hasDifferentBankIssues
6 имеет вопрос
7 hasSubCountries

Попробуйте:

countryObj.hasSubCountries=(sqlite3_column_int(statement, 7) == 1);

Не

countryObj.hasSubCountries=(sqlite3_column_int(statement, 6) == 1);
0 голосов
/ 27 октября 2011

Может быть, это действительно струны.Откройте базу данных с помощью программы командной строки sqlite3 и попробуйте запустить select hasSubCountries = 1 from countries.Тогда попробуйте select cast(hasSubCountries as integer) = 1 from countries.

0 голосов
/ 27 октября 2011

Почему бы вам не изменить свое мышление?

countryObj.hasSubCountries=(sqlite3_column_int(statement, 6) != 0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...