Objective c 通过比较新的字符串保留属性来修改NSAttributedString?

Objective c 通过比较新的字符串保留属性来修改NSAttributedString?,objective-c,ios7,nsstring,nsattributedstring,Objective C,Ios7,Nsstring,Nsattributedstring,不确定标题是否好,但问题是 我正在从大量的数据中开发一个应用程序,用户无法更改这些数据,但可以添加诸如评论、注释、书签等内容 我正在考虑使用NSAttributedString来允许用户向所有原始NSStrings文本段落添加突出显示 我遇到的问题是,基础数据可能会发生变化。有时是由于人为错误(键入错误等),有时是因为数据只是更新。通常,这只不过是更正一两个单词或在原始NSString中添加/删除一个句子 我试图避免的是用新字符串替换字符串,并丢失属性或使它们出现在错误的位置 我想做的是找出新的

不确定标题是否好,但问题是

我正在从大量的数据中开发一个应用程序,用户无法更改这些数据,但可以添加诸如评论、注释、书签等内容

我正在考虑使用
NSAttributedString
来允许用户向所有原始
NSStrings
文本段落添加突出显示

我遇到的问题是,基础数据可能会发生变化。有时是由于人为错误(键入错误等),有时是因为数据只是更新。通常,这只不过是更正一两个单词或在原始
NSString
中添加/删除一个句子

我试图避免的是用新字符串替换字符串,并丢失属性或使它们出现在错误的位置

我想做的是找出新的
NSString
和旧的
NSString
之间的差异,并在不丢失用户可能添加的任何现有属性的情况下插入/删除相应的更改

例如,我可能有一个
NSAttributedString
,如下所示:

awl声明有5天的时间作出响应。在极端情况下,这可能会减少

用户可能突出显示了第一句话或只是数字5

我现在需要修正这一点:

法律规定有5天的时间作出答复。在极端情况下,这可能会减少

或:

文章说有5天的时间可以回复。在极端情况下,这可能会减少

也许以后:

法律规定,在正常情况下,将有7天的时间作出答复。在极端情况下,这可能会减少。很少允许更长的时间

…同时保留格式的要点。i、 e.突出显示整个句子,或只是将数字格式化

我想我需要的是:

  • 一种确定编辑所需的最少编辑次数的方法 到达新的字符串并
  • 在根据需要解释和维护/扩展
    NSAttributedString
    的原始属性时执行这些编辑
  • 我可以达到2。通过显式插入/替换/删除指定示例的字符串中的字符

    但是我不知道如何获得1的信息。i、 e确定需要为任何一对新旧字符串插入/删除/替换哪些字符

    我希望这是有意义的,我忽略了一个简单的“比较”方法,它可以做到这一点

    非常感谢您的帮助

    编辑: 我越是想这件事就越不可能。。。当前高亮显示整个字符串或不高亮显示任何内容的方法看起来必须这样做。或者将编辑存储为实际的“要删除的字符串”、“要替换的字符串”或“要插入的字符串”


    我仍然对各种可能性持开放态度,但如果有人有解决方案,我会把问题留给其他人。

    不确定我是否理解所有后果,但我理解
    nsmutableAttributeString
    包含一个字符串和一个应用于某个范围的属性字典。它还提供插入、删除和替换AttributedString的方法,这意味着插入或替换的字符串也有其属性。对于您来说,关键在于决定哪些属性将应用于插入的字符串,要么是插入点左侧或右侧的现有属性,要么是无属性
    NSMutableAttributedString
    在字符串更改时负责属性范围的移动,您可以免费获得它。@MartinKoles谢谢您的回答。是的,我知道如何处理字符串的属性和插入/删除/替换字符。正如我所说的,我可以对具体的例子这样做,没有任何问题。我想弄清楚的是,是否可以采用
    NSString*A
    NSString*B
    并准确地确定需要进行哪些更改才能将A更改为B。