当我在NSMutableDictionary中使用以下键Ä,Å,Ö时,它们会转换为“\ U00c4”,“\ U00c5”和“\ U00d6”。当我在代码中使用原始形式(Å,Ä和Ö)时,导致我的软件错过与所提到的键相关联的对象。该语言是瑞典语,我希望这适用于所有国家/地区,因此转换不是理想的行为。
我在这里做错了什么?
如何避免转换字符?
代码:
- (void)populateNavigationViewWithProjects:(id)projects
{
[self.navigationViewItems removeAllObjects];
BOOL keyExists = NO;
NSString* firstLetterInProjectName = @"";
for (id project in projects) {
firstLetterInProjectName = [[[project valueForKey:@"name"] uppercaseString] substringToIndex:1];
keyExists = [[self.navigationViewItems allKeys] containsObject:firstLetterInProjectName];
if (keyExists) {
[[self.navigationViewItems objectForKey:firstLetterInProjectName] addObject:project];
}
else {
NSMutableArray* listOfProjects = [[NSMutableArray alloc] initWithObjects:project, nil];
[self.navigationViewItems setValue:listOfProjects forKey:firstLetterInProjectName];
[listOfProjects release];
}
}
[self.tableView reloadData];
}
navigationViewItems访问:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
NSString* sectionTitle = [[[UILocalizedIndexedCollation currentCollation] sectionTitles] objectAtIndex:section];
BOOL sectionContainsData = [[self.navigationViewItems allKeys] containsObject:sectionTitle];
if (sectionContainsData) {
return sectionTitle;
}
return @"";
}
Å,Ä和Ö下列出的物体不会因此而列出。
答案 0 :(得分:0)
你可以在使用字符串之前调用-precomposedStringWithCanonicalMapping
。
NSString处理unicode内容的功能。
precomposedStringWithCanonicalMapping:
decomposedStringWithCanonicalMapping: