- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们尝试使用 NSFetchedResultsController
返回人名,并使用 localizedCompare:
按排序顺序填充 UITableView
。我们还尝试在 UI 中提供部分索引(每个部分的第一个字符的右列)。我们为 NSFetchedResultsController
提供了实体上的选择器,该选择器提供了每个实体应属于的部分(具体来说,人名的第一个字符,大写)。
在处理使用 Unicode 代码点的人名时,我们遇到了一个问题。 NSFetchedResultsController
提示实体没有按部分排序。
具体:
reason=The fetched object at index 103 has an out of order section name 'Ø. Objects must be sorted by section name'}, {
reason = "The fetched object at index 103 has an out of order section name '\U00d8. Objects must be sorted by section name'";
问题似乎是 localizedCompare:
返回的比较值对于整个“单词”与前导字符来说是不同的。
以下测试通过,但我希望(“Ø”和“O”)与(“Østerhus”和“Osypowicz”)之间的比较结果一致。
- (void)testLocalizedSortOrder300
{
NSString *str1 = @"Osowski";
NSString *str2 = @"Østerhus";
NSString *str3 = @"Osypowicz";
NSString *letter1 = @"O";
NSString *letter2 = @"Ø";
//localizedCompare:
//"Osowski" < "Østerhus"
NSComparisonResult res = [str1 localizedCompare:str2];
XCTAssertTrue(res == NSOrderedAscending, @"(localizedCompare:) Expected '%@' and '%@' to be NSOrderedAscending, but got %@", str1, str2, res == NSOrderedSame ? @"NSOrderedSame" : @"NSOrderedDescending");
//"Østerhus" < "Osypowicz"
res = [str2 localizedCompare:str3];
XCTAssertTrue(res == NSOrderedAscending, @"(localizedCompare:) Expected '%@' and '%@' to be NSOrderedAscending, but got %@", str2, str3, res == NSOrderedSame ? @"NSOrderedSame" : @"NSOrderedDescending");
//"O" < "Ø"
res = [letter1 localizedCompare:letter2];
XCTAssertTrue(res == NSOrderedAscending, @"(localizedCompare:) Expected '%@' and '%@' to be NSOrderedAscending, but got %@", letter1, letter2, res == NSOrderedSame ? @"NSOrderedSame" : @"NSOrderedDescending");
}
因此,最终的问题是,给定一个使用 Unicode 代码点的人名(或任何其他字符串),我们如何正确(以本地化方式)返回一个与以下命令所规定的排序顺序相对应的部分名称本地化比较:
?
此外,localizedCompare:
显然将“Ø”和“O”视为 NSOrderedSame
后跟附加字符,这是怎么回事?
最佳答案
我预计 localizedCompare:
正在使用导致此行为的 NSStringCompareOptions
标志的特定组合。 https://developer.apple.com/documentation/foundation/nsstringcompareoptions?preferredLanguage=occ
通过使用 compare:options:
并打开 NSDiacriticInsensitiveSearch
,您可能会得到您想要的结果。
为了生成节索引,最好先去除所有扩展字符的值,然后获取第一个字母。像这样的东西:
[[str1 stringByFoldingWithOptions:NSCaseInsensitiveSearch | NSDiacriticInsensitiveSearch] substringToIndex:1]
这样,在您获取该部分的第一个字母之前,以重音字母开头的名称(例如“Édward”)将被转换为“Edward”。
关于ios - NSString localizedCompare : inconsistent results given longer strings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44809680/
我在一个网站上工作,我的一侧有一段文字不完全适合,所以部分内容不可见,因为网站的底部在那里结束。我想让它可以滚动,这样我就可以通过向下滚动查看完整内容。 #header { z-index: 1; p
已经有很多关于使用 pivot longer 和 pivot wider 以我需要的方式 reshape 数据的问题,但没有一个能得到正确的答案。过去,我成功地结合使用了更长的旋转轴和更宽的旋转轴来获
我为客户开发了一个应用程序并交给了他。 他刚刚安装并正在使用它...... 现在我的许可证已经过期,现在他突然说他的应用程序说: {my_app}“不再可用” [ 注意:到目前为止他没有重新安装应用程
我有一个 flutter 项目,我必须在其中获取 IOS 版本。当我在 Android Studio 中尝试 Flutter->Build IOS 时,收到以下错误消息。 “CFURLRequestS
我使用的是 Wildfly 10.0.x。我正在将 ejb2.1 迁移到 ejb3.2这是我的 ejb-jar.xml 文件 www.cedar.com - Collaborative Plann
昨天,我正在使用 Instagram API 进行一些测试。我想设计一个网页,在其中显示我们帐户中的最新照片(有些像社交动态)。今天,我收到此错误:“用于身份验证的客户端不再处于事件状态。”。 有人知
所以我的代码中有一行是这样的 WebElement docDate = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpa
嗨,伙计,我必须知道页面何时不再是当前页面。我认为我必须使用 Listener,我看到它存在: @Override public void onPageSelected(int
我有一个带有下拉菜单的简单导航栏,当用户将鼠标悬停在导航栏中其受尊重的链接上时,该菜单应该保留,但在用户将鼠标悬停在实际下拉菜单而非其链接上后,我无法使其保留。我试过创建一个 :hover在实际下拉列
我正在尝试测试我的应用程序如何处理被 Android ActivityManager 销毁(以及稍后由 Alarm 事件重新启动)。换句话说,我想强制消息: I/ActivityManager( 3
我在 UITextView 上有一个观察者来检测它的内容大小是否在变化: [_textView addObserver:self forKeyPath:@"contentSize"options:NS
我在 Android O 及更高版本中尝试运行我的 JobIntentService 时遇到以下问题,我很难重现该问题: Caused by java.lang.SecurityException:
我编写了一个 iOS 应用程序,我在其中非常成功地使用了 CGLayer。在研究从该应用程序中获得更多性能的方法时,我看到了这篇博文:http://iosptl.com/posts/cglayer-n
我有这个配置 包中的位置 com.x.record.persistence.impl 我有一个组件需要来自 com.x.record.persistence.repo 的存储
我的函数,用来计算给定的频率、频率、功率。我想对它进行矢量化,这样它就可以计算频率、FWHM和AMP:。计时:。我在lorz1和lorz2中的向量化哪里出了问题?他们不是应该比洛兹3更快吗?
我的函数计算洛伦兹给定频率,fwhm,amp。我想对它进行矢量化,以便它计算频率,fwhm和amps的列表:。计时:。我在lorz1和lorz2中的向量化哪里出了问题?他们不是应该比洛兹3更快吗?
我想 pivot_long() 下面数据集的多列避免硬编码。我看过一些类似的问题,但我仍然做不到。 宽数据: > head(data) ID IND_TEST_SCORE ARG_G1_A
我已经为此工作了大约一天半,并在网上搜索了大量博客和帮助文章。我在 SO 上发现了几个与此错误相关的问题,但我认为它们并不完全适用于我的情况(或者在某些情况下,不幸的是,我无法很好地理解它们以实现 :
我到处搜索这个,找不到它。 Apple 会恢复从销售中删除的应用内购买吗? 可以在 iTunesConnect -> Cleared for sale -> No. 上删除 IAP。 上个月我添加了一
我们在Android Studio 3.4.1中显示以下警告消息: WARNING: The following project options are deprecated and have bee
我是一名优秀的程序员,十分优秀!