大家好。
我在用 Swift 独立设计开发一款叫做 iOS 效率软件。我本身不是理科出身的,数学逻辑不太好,所以遇到一个逻辑相对复杂的地方,一直拖着没有解决。所以来这里寻求帮助。
具体点说,我的软件是一个写作软件。但文章数据不会保存为 Document,而是一个数据库。所以当用户使用 UITextView 时,软件会将 NSAttributedString 转换成 CoreData 数据。我脑子无法胜任搞定逻辑过于复杂的转换,所以想借你们解决问题。
感兴趣的话,请联系我的邮箱 [email protected] ,并告诉我需要支付多少费用。做出来的代码放在 Bitbucket private repo 或 GitHub public repo 都行,只需要通过 unit testing,能用就行。
p.s 我自己本身也有做一些 swift 开源项目,比如这个。GitHub.com/remaerd/keys
1
13036101641 2017-11-22 10:08:01 +08:00
NSAttributedString 有很多属性,只是将它的文本存储到 CoreData 吗?
|
2
xiubin 2017-11-22 10:14:08 +08:00 via iPhone
写作软件的重点不是在于编辑器上吗?
|
3
remaerd OP @13036101641 需要将 UITextView 内的 NSAttributedString 分段存到 CoreData。难点在于用户的全部修改会直接进数据库。而用户的编辑行为其实有很多种可能,包括输入,删除,剪切粘贴。我自己搞过,然后很多地方都可能出问题。
|
5
zjddp 2017-11-22 13:26:01 +08:00
试试 openXML ?不知道这个算不算一种富文本持久化方案
|
6
zjddp 2017-11-22 13:32:20 +08:00
另外,用户操作全进数据库这个,是不是考虑到 undo/redo 了,我记得 Foundation 提供了 NSUndoManager 来管理 undo/redo,如果是的话你可以试一下。
|
7
13036101641 2017-11-22 17:35:21 +08:00
https://developer.apple.com/library/content/samplecode/StateRestore/Introduction/Intro.html
这个是 iOS 官方的一个 demo,估计满足不了你那么复杂的需求,它这个 api 主要用于恢复应用的状态 |
8
remaerd OP @zjddp
@13036101641 进数据库并不是为了 Undo / Redo。如果文章里面包含任务清单,我会在文章编辑器之外的地方展示任务;并做一个快速跳转搜索栏,可以随时随地跳转到任何内容。如果使用纯 Document / XML / KeyedArchiver 格式保存文件,是无法实现快速搜索跳转和任务清单功能的,所以需要将文章内容保存到数据库内,并将文章的内容进行分段储存。 我目前的办法是通过 NSTextStorage 获得用户的光标位置,并只保存光标这一段内容的修改情况。但是在修改的过程中,会出现很多我上面提到的替代路径,比如添加,删除,批量添加,批量删除,修改。所以像我这种逻辑能力不强的人,就无法承担这么复杂的替代路径,并保证软件不出 BUG... 有朋友建议我不要用这么复杂的办法实现,但是如果用这种方式偷懒的话,以后要实现新功能时,又会有很大机率碰到其他问题。 |
10
remaerd OP @zjddp 对,是和 Notion 的 Model 架构有点像。有兴趣的话,可以一起私聊一下。^_^
|
11
remaerd OP |
12
13036101641 2017-11-25 11:05:54 +08:00
@remaerd 我还想等你做出来了,用这么个高大尚软件呢,我有用印象笔记,感觉它也没有你提出的这么个功能啊,只是感觉它创建笔记很方便,而且和电脑同步起来很流畅
|
13
remaerd OP @13036101641 感觉 Notion 蛮适合你的,我自己用起来会觉得比较复杂。我还有好多酷炫屌的想法还没实现,好想尽早搞定这堆麻烦事。
|
14
13036101641 2017-11-25 11:30:09 +08:00
@remaerd 好,我试试,第一次听说这个软件
|
16
remaerd OP @zjddp 谢谢你。有空联系。[email protected]
|
17
zhigang1992 2017-11-26 09:41:44 +08:00
可以考虑全部 snapshot? 虽然费一点存储,但是就不用处理那些逻辑了。
|