Nano Hash - криптовалюты, майнинг, программирование

Логическое значение из SQLite всегда возвращает 0

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

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

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

hasSubCountries integer DEFAULT 0

Изменили значение пары subCountries на 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, и поэтому 'if' подталкивает меня к @"Sub". Где я ошибся?

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

введите здесь описание изображения

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

введите здесь описание изображения


  • можете ли вы добавить полные определения столбцов таблицы? 27.10.2011
  • Кроме того, hasSubCountries — это BOOL? 27.10.2011
  • @bryanmac hasSubCountries целое число ПО УМОЛЧАНИЮ 0 27.10.2011
  • Вы можете поделиться оператором выбора? 27.10.2011

Ответы:


1

Разве это не индекс столбца 7?

0 countryID
1 countryName
2 relativeToContinent
3 countryFlag
4 hasRegionalIssues
5 hasDifferentBankIssues
6 hasIssue
7 hasSubCountries

Пытаться:

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

Нет:

countryObj.hasSubCountries=(sqlite3_column_int(statement, 6) == 1);
27.10.2011
  • потому что вторым аргументом для sqlite3_column_int является индекс столбца. Согласно определению вашей таблицы, hasSubCountries — это столбец индекса 7. То есть, если вы делаете выбор *. Если ваш оператор sql представляет собой другой оператор выбора с явными столбцами (которые вы не разделяли), то он может быть не 7. 27.10.2011
  • const char* sqlCountries =sqlite3_mprintf(ВЫБЕРИТЕ идентификатор страны,имя страны,флаг страны,hasRegionalIssues,hasDifferentBankIssues,hasIssue,hasSubCountries\ ИЗ стран\ WHERE relativeToContinent=%i\ ORDER BY countryName ASC,continentID); 27.10.2011

  • 2

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

    countryObj.hasSubCountries=(sqlite3_column_int(statement, 6) != 0);
    
    27.10.2011
  • Извините, ребята, это я идиот (стыдясь и пряча глаза). Извините, что потратил ваше время. Я просто забыл выбрать эти поля в моем запросе выбора SQLite. Все работает нормально. 27.10.2011

  • 3

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

    27.10.2011

    4

    Извините ребята,

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

    27.10.2011
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..