Ios FMDB stringForColumn返回零

Ios FMDB stringForColumn返回零,ios,nsmutabledictionary,fmdb,Ios,Nsmutabledictionary,Fmdb,我正在循环使用从SQLite3数据库生成的FMDB结果集,创建稍后使用的对象。 数据内容由不同的用户使用不同的文本编辑器和编码创建 少数记录存在问题,即使列中有文本,列值仍返回nil 例如,我在运行命令行查询时看到数据库中某列的文本,但FMDB方法stringForColumn返回nil。我还发现,潜在的原因是列内容中的高ascii字符,这很可能是用户从MS Word复制和粘贴文本造成的。我的问题是,当意识到数据库中的某些数据可能具有这些字符时,处理此类“脏”数据的最佳方法是什么 NSMutab

我正在循环使用从SQLite3数据库生成的FMDB结果集,创建稍后使用的对象。 数据内容由不同的用户使用不同的文本编辑器和编码创建

少数记录存在问题,即使列中有文本,列值仍返回nil

例如,我在运行命令行查询时看到数据库中某列的文本,但FMDB方法stringForColumn返回nil。我还发现,潜在的原因是列内容中的高ascii字符,这很可能是用户从MS Word复制和粘贴文本造成的。我的问题是,当意识到数据库中的某些数据可能具有这些字符时,处理此类“脏”数据的最佳方法是什么

NSMutableDictionary *words = [[NSMutableDictionary alloc] init];
FMResultSet *rs = [db executeQuery:@"SELECT * FROM `foo` WHERE 1"];

while ([rs next]) {
    Word *myWord = [[Word alloc] init];  

    //Coming in as a nil value eventhough there is text in the database column
    [myWord setDefinition:[rs stringForColumn:@"definition"]];

    [words setObject:[myWord definition] forKey:[myWord term]];
}


select语句中的“Where”不正确。

即使有不同的用户从多个文本编辑器输入代码和编码,也必须将它们规范化为DB设置的编码。 似乎这可能与FMDB没有正确处理数据库中存储的编码的翻译有关。也许因为你知道数据的编码,你可以拉 内容和做你自己的“翻译”?尝试使用dataForColumn或UTF8StringForColumnIndex直接拉取数据,看看结果如何


顺便说一句,“where”并没有错,但我认为这是多余的。我还要补充一点,因为它没有任何作用,它可能会误导或混淆那些sql不那么流利的人。

不,它不是。我建议您查看SQL规范,或者自己运行它。