加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – 保存在Core Data中后的字符串长度更改

发布时间:2020-12-16 05:03:28 所属栏目:百科 来源:网络整理
导读:所以这是一个问题. 我有一个字符串 Белый Клык-0.fb2 NSString方法长度返回16 在Core Data中保存字符串后(后端–sqlite) NSString方法的长度返回17,但在视觉上字符串保持不变 Белый Клык-0.fb2 显然方法是isEqualToString:返回NO 花了很
所以这是一个问题.

我有一个字符串

Белый Клык-0.fb2

NSString方法长度返回16

在Core Data中保存字符串后(后端–sqlite)

NSString方法的长度返回17,但在视觉上字符串保持不变

Белый Клык-0.fb2

显然方法是isEqualToString:返回NO

花了很多时间在实验中,我很遗憾这个问题是这封信:

й

删除此信解决问题.

但它让我疯狂,为什么会发生这样的事情?

这里的解决方法有效,但不满足我:

> stringByReplacingPercentEscapesUsingEncoding: – 需要在db查询中和之后转换字符串
>音译整个字符串 – 有点黑客

以及dosnt工作的解决方法:

> stringWithUTF8String
> Converting escaped UTF8 characters back to their original form

在Core Data中保存后,请帮助我了解字符串发生了什么.

还有更优雅的解决方案吗?

解决方法

这个问题可能与 unicode normalization有关.所以Coredata似乎存储了已分解的字符串(因此?对于字母计数为2 – 1,对于字母为1计数)这就是为什么你得到长度差异的原因.如果在将其与Coredata返回的字符串进行比较之前尝试分解原始字符串,则应该可以正常工作:
[yourOriginalString decomposedStringWithCanonicalMapping]

现在,背后的原因超出了我的专业领域.我经常使用coredata来管理我的模型,并且曾经多次使用希腊语/俄语字符串,从未遇到过这样的问题.如果任何人都可以对此进行扩展并获得一些启示,我也会对这个问题非常感兴趣.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读