通过与新的String保留属性进行比较来修改NSAttributedString?

时间:2014-04-21 13:26:24

标签: objective-c ios7 nsstring nsattributedstring

不确定标题是否很棒,但这是问题......

我正在从一大堆数据开发一个应用程序,用户无法更改,但可以添加评论,备注,书签等内容...

我正在考虑使用NSAttributedString来允许用户将精彩部分添加到最初都为NSStrings的文字段落中。

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

我想避免的是用新字符串替换字符串并丢失属性或让它们出现在错误的位置。

我想要做的是找到新NSString和旧NSString之间的差异,并根据需要插入/删除更改,而不会丢失用户可能添加的任何现有属性。

例如,我可能有NSAttributedString这样:

  

锥子表示有5天的时间做出回应。在极端情况下,这可能会减少。

用户可能已突出显示第一个句子或仅突出显示数字5.

我现在需要将其修改为:

  

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

或:

  

文章指出有5天的时间作出回应。在极端情况下,这可能会减少。

也许稍后会:

  

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

...同时保留格式的要点。即保持整个句子突出显示,或只是保持数字格式化。

我想我需要的是:

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

    但我对如何获取1的信息感到茫然。即确定哪​​些字符需要插入/删除/替换为任何一对OLD&新字符串。

    我希望这是有道理的,并且我忽略了一种简单的“比较”方法,可以做到这一点。

    非常感谢任何帮助。

    修改: 我想的越多,它看起来可能性就越小......当前突出显示整个字符串的方法看起来就像它必须要做的那样。或者将编辑内容存储为实际的“要删除的字符串”,“要替换的字符串”或“要插入的字符串”。

    我仍然对可能性持开放态度,所以如果有人有解决方案的话会留下问题。

0 个答案:

没有答案