0

我的 Iphone 应用程序中有一个 sqlite 数据库。在 tableView 中使用 sectionIndexTitlesForTableView 时,我有一个名称需要排序的表。

sql语句为“ SELECT * FROM buildings ORDER BY name ASC”。这给出了一个排序的结果,但不知何故,特殊字符的排序失败了 - 丹麦 æ ø å。喜欢:

  • 奥胡斯大学
  • 奥胡斯
  • Øer Maritime Ferieby

Å 应该在 Ø 之后。

我已经尝试阅读 COLLATE,但对在这里做什么感到很茫然。请注意,sqlite 似乎工作正常 - 使用 UTF8 编码,应用程序中的一切看起来都很好。除了字母排序。

有什么线索吗?

4

1 回答 1

0

由于我只需要对 sectionForSectionIndexTitle 中使用的数组进行正确排序 - 表视图数据源我通过执行以下操作绕过了 sqlite 中的排序问题:


NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"da_DK"]; sections = [sections sortedArrayUsingComparator:^(NSDictionary *first, NSDictionary *second) { NSString *str1 = [first objectForKey:@"section"]; NSString *str2 = [second objectForKey:@"section"];

    return [str1 compare:str2
                  options:0
                    range:NSMakeRange(0, [str1 length])
                   locale:locale];

}];
我认为这样做是可以的,因为节数组中的条目数不会超过字母表中的字符数。

于 2012-08-16T13:36:40.020 回答