DevLog:2025年7月28日

1、上周经历了Trae、Lingma和Cursor的多轮修改之后,DoitWith原本已经具备的删除Todo和回收站功能暂时消失了,但RecycleBinView文件还在,决定让Cursor试一下恢复这个功能
2、但在模拟器中测试目前的DoitWith时,发现无法创建Todo,创建时Debug信息会提示:
UIKeyboardLayoutStar implements focusItemsInRect: – caching for linear focus movement is limited as long as this view is on screen.
Error: this application, or a library it uses, has passed an invalid numeric value (NaN, or not-a-number) to CoreGraphics API and this value is being ignored. Please fix this problem.
If you want to see the backtrace, please set CG_NUMERICS_SHOW_BACKTRACE environmental variable.
且应用会卡死,直接把这些错误信息给到Cursor,Cursor在修改TodoData.swfit、TodayView.swift、AddTodoView.swift之后,虽然可以构建成功,但又卡在了启动界面,不进入TodayView界面
3、在排查问题的过程中,Cursor在多个文件里添加了调试信息,以便于定位问题,后续可以把这些DEBUG信息给到Cursor,更有针对性的解决问题
4、多次修改之后仍然会卡在启动界面,决定暂时让Cursor简化当前的应用:“不需要Today界面了,进入应用后直接显示Todo界面,底部也不需要在Today和Todo之间切换,先看下都有哪些文件和代码可以简化”,Cursor征求我的同意后删除了TodayView.swift、MainTabView.swift,并对多个文件进行简化,在我的要求下保留了SplashView启动界面和RecycleBinView回收站,Cursor还顺便在设置中添加了回收站功能,简化之后的应用经Xcode模拟器测试,可以正常启动,且可以正常创建Todo
5、但是相比之前我的需求,缺少了长按菜单(删除Todo、修改截止日期、修改分组等)、Todo页面视图也过于简单,甚至看不到Todo条目的截止时间,但是相比之前多了左上角的“Edit”按钮,点击后可以对Todo条目进行拖动排序,后续调整和增加功能时,还是要遵循“小步快跑”的原则,不要一次调整或增加太多功能,这样出现问题后也比较容易排查
6、询问Cursor当前的文件中是否有长按Todo弹出的菜单相关代码、给Todo条目分组的代码,前者已经没有了,后者还存在,但功能未启用,决定先让Cursor完善一下Todo条目的显示:目前Todo列表中仅显示Todo标题,还需要显示描述(Description)、截止日期(Due Date)、重复频率(Repeat)信息,并且适当拉高Todo条目的显示高度,以容纳这些信息,Cursor很快修改完成,并且优化了显示效果
7、重复频率目前有Daily、Weekly、Monthly,分别对应日、周、月,需要增加一个Yearly,即每年重复提醒一次,继续让Cursor添加此功能,很快添加完成
8、感觉现在每一条Todo显示的高度有些太高了,需要稍微减小一些条目高度,可以适当缩短每个Todo的三行内容之间、每两条Todo之间的垂直间距,Cursor给出了修改前后的对比:
调整前:条目间垂直间距:8pt、内容间垂直间距:6pt、图标顶部间距:2pt
调整后:条目间垂直间距:5pt、内容间垂直间距:3pt、图标顶部间距:1pt
9、接下来修正一个问题:点击右上角“+”时,每条Todo的右侧会出现删除按钮,需要调整成点击左上角的”Edit”时,每条Todo的右侧会出现拖动调整顺序按钮(已有,且功能正常)和删除按钮,点击删除按钮可删除本条Todo,点击右上角“+”时,每条Todo的右侧不要再出现删除按钮
10、在修正这些问题之后,继续让Cursor修正删除Todo时卡死、删除的Todo不显示在回收站里,回收站里的Todo点“恢复”之后,不会显示在 Todo界面等问题,顺便解决数据结构冗余的问题(同时存在Todo和TodoItem两个结构体),Cursor在代码中添加了很多调试信息,方便定位问题,结合调试信息和Xcode代码窗口的错误提示,Cursor修正了这一问题,今天就到这儿了

DevLog:2025年7月25日

1、Trae今天早上竟然修正了昨天的无限循环的错误问题,可以构建,并在Trae的模拟器中打开应用了,但经测试发现,Today页面的头部缺失,只显示了截止日期为当天的Todo,而且也缺失右上方的添加和设置按钮,继续让Trae修正
2、不知道为啥用Trae修改应用时,既会修改我要求的地方,又会自己改一些我没有要求的地方,比如DoitWith中条目的样式、底部Tab的底色、底部两个Tab的名字(之前是英文Today和Todo,现在被改成了今天、待办),难道是我中途切换了模型导致的?
3、这两天Trae还出现了一个问题,就是会判定某个文件存在重复(但实际上并没有重复文件),然后删掉这个文件,再创建一个新的文件,但命名变成了全小写,比如maintabview.swift,之后再表示之前判断错了,并没有重复文件,这是在折腾啥?
3、AI IDE貌似存在一个通用的问题:初期能够很快实现简单的需求,随着后续功能增加,出问题的概率就会越来越大,近期从UserDefaults切换至Core Data时必出问题
4、下载了一个新的AI IDE,阿里的通义灵码,反正DoitWith也已经被Trae中的多个模型(Doubao-Seed-1.6、Kimi-K2、Claude Sonnet 4、Qwen-3-Coder)修改的面目全非了,准备试试,内置了Qwen-3-Coder、Qwen-3-Thinking、Qwen-2.5-max,可以使用Auto模式,也可以手动切换
5、先询问了Lingma对当前DoitWith的体验和优化和功能增强的建议,决定先让Lingma为当前应用增加Trae没能完成的重复任务功能:
我需要增加这个功能:支持为每个Todo设置“重复”,在创建Todo/修改Todo截止时间时,可以设置/修改重复频率,可选“每天、每周、每月、每三个月、每年”五种重复频率
6、Lingma添加了这个功能,涉及TodoData、TodoView、TodayView三个文件,并且要求它检查了,不存在语法错误,但是Lingma表示它无法直接构建项目,建议我在X中进行构建,甚至智能问答模式下不会主动修改文件,只会给出“应该改成什么样”的建议,要求它修改文件之后才直接对这三个文件做了修改
7、在处理一些警告时,再次出现了只给建议和示例,不直接修改文件的问题,再次要求后,在Xcode中构建仍然提示同样的问题,试试看将“智能问答”模式切换为“文件编辑”模式,但是使用过程中Lingma变得非常卡,点击“停止”后甚至卡住不动了,不完全退出后重新打开项目,历史记录显示已完成修改,Lingma IDE技术人员建议我用智能体模式,可以给出建议并修改文件,但是智能体模式同样无法直接构建项目
8、再次切换回Cursor,希望能够解决Trae和Lingma一直没能解决的频繁出现的编译错误,但提示免费额度已经用完了,充了一个月的Pro,支付宝付款144.11,之后Cursor开始修复问题并进行构建测试,很快就修复完成,构建成功,过程中提示解决了MainTabView的问题、数据结构不一致的问题、缺失的属性和方法问题、枚举类型问题、类型不匹配问题、组件引用问题、语法错误,问题着实有点多,可能都是之前频繁切换IDE和模型的后遗症,现在已经可以构建成功,然后又遇到了之前一直没能解决的卡在启动界面的问题
9、在“移除Today界面长按Todo弹出菜单,只可以点击Todo条目前的圆形按钮以完成Todo”之后,终于解决了应用卡在启动界面的问题,看来可能是Today界面的功能太过复杂导致启动时被卡住
10、今天的最后一步操作是:把界面右下角的设置按钮移动到Todo界面右上角,并且在设置中增加Todo条目统计功能,分为“待完成Todo”和“已完成Todo”两条显示,每次换用不用的IDE或模型,都会导致需求之外的改动,以后尽量只用一个Cursor,少用Trae和Lingma

DevLog:2025年7月24日

1、暂时没能找到Trae的官方交流群,官网引导到了稀土掘金的Trae用户交流圈,已注册稀土掘金并加入了交流圈,并且发帖询问Xcode模拟器测试时卡在启动页的问题
2、继续让Trae提供功能增强和优化的建议,基于Kimi-K2模型的分析,Trae给出了划分优先级的功能增强和用户优化建议,我只选了这两项:
1.重复任务:支持设置每周、每月、每三个月、每年重复任务,可以在创建Todo/修改Todo截止时间时进行设置/修改
2.Todo界面右上角添加多选按钮(图形按钮),点击可以多选Todo,并进行批量完成/删除操作
3.截止日期中的月份现在显示为英文,需要改成数字+中文,如“July”需改成“7月”
3、发现在切换模型为Kimi-K2之后,Trae不会自动检查语法错误了,也不会自动进行构建测试了,将模型切换为自动后,思考和修改过程又开始出现英文,明确要求了下以后不要用英文输出,但之后还是有出现用英文回答的时候,特别是复制Xcode的报错信息给Trae之后
4、不知道是不是Trae将我上面的第二条需求理解错了,修改了AppIcon,导致后续频繁出现编译错误,而且Trae在运行一段时间之后会提示“模型思考次数已达上线,请输入继续后获得更多结果”,这时如果使用的是带有深度思考能力的模型(比如Doubao-Seed-1.6),可能操作就会被打断,忘记了前面已经检查/修改到了哪个文件的哪一部分,手动选择其它不带有深度思考能力的模型就不会有这种“因中断而忘记进度”的问题出现
5、在使用AI编程的过程中还是尽量不切换模型比较好,切换模型之后Trae需要一些时间来熟悉整个项目,对之前出现的错误的理解可能也会有问题,而且使用Kimi-K2模型时,无法自动进行构建测试,切换到Qwen-3-Coder模型之后就可以自动进行构建测试了
6、貌似在今天的修改过程中,卡在了“重复任务”这条需求上,然后尝试让Trae去掉这个功能及相关代码,还在不断修复编译错误等问题

DevLog:2025年7月23日

1、今天没有让Cursor或者Trae优化应用,询问AI了解了Cursor和Trae的区别,这样看来可能Trae更适合我,免费,模型随意切换,开发流程自动化,对新手更友好
Trae与Cursor作为AI编程工具的代表,在定位、功能及用户体验等方面各有优劣,以下从多维度对比分析二者的优势与不足:
一、Trae的优势
本土化体验突出:专为中文开发者设计,提供全中文界面、中文代码注释及语义优化,支持直接通过中文自然语言描述需求(如“实现带登录功能的网页”)生成完整代码框架,更符合国内开发习惯。
免费策略与企业支持:完全免费使用,集成Claude 3.5、GPT-4o等模型(国际版)或Doubao-1.5-pro、DeepSeek系列模型(国内版),且支持私有化部署及企业级数据隔离,降低个人及企业使用成本。
开发流程自动化:通过Builder模式实现“对话式开发”,简化项目设置、文件创建及初始代码编写,支持实时预览开发成果;同时自动修复环境错误(如缺失依赖),对新手更友好,降低编程门槛。
二、Trae的不足
模型能力与多样性受限:国内版主要依赖Doubao-1.5-pro、DeepSeek系列模型,在复杂业务逻辑推理、代码生成质量及准确性上弱于Cursor的Claude、GPT系列模型;模型数量较少(国际版受政策限制不可用)。
复杂任务处理能力较弱:在复杂代码生成(如数字时钟、俄罗斯方块)、需求理解及优化上表现不足,生成代码可能存在功能缺失或运行稳定性问题(如闪退、报错)。
三、Cursor的优势
模型能力与多样性领先:支持Claude 3.5/3.7、GPT-4/4.5等国际顶尖模型,代码生成质量、逻辑推理及复杂任务(如跨文件开发、复杂项目上下文感知)处理能力更优。
生态与兼容性强:基于VS Code重构,保留其插件生态及跨平台能力,支持多语言(Python、Go等)和复杂项目开发,适合成熟开发者。
功能全面性与准确性:在代码完成质量(如环形进度条、数字时钟)、逻辑完整性及纠错优化(如修复猜拳游戏代码并优化)上表现更优,agent模式下对项目整体把控更精准。
四、Cursor的不足
使用门槛高:国内访问需技术手段(如网络工具),Pro版需付费(40美元/月),增加个人及企业使用成本。
中文支持不足:界面以英文为主,中文理解偶发歧义,本土化体验弱于TRAE。
新手友好度低:错误提示需手动排查,依赖插件组合完成开发流程,对零基础用户不够友好。
总结:Trae以本土化、免费及自动化开发为核心优势,适合快速迭代的中文项目及新手开发者;Cursor凭借顶尖模型与生态能力在复杂工程中更具优势,但存在访问及成本门槛。两者可根据开发者需求(如语言偏好、项目复杂度、成本限制)选择使用。
2、了解到阿里和腾讯也有类似产品,阿里通义灵码,腾讯CodeBuddy

DevLog:2025年7月22日

1、继续修改DoitWith,尝试让Trae完成编辑截止日期的功能:
完善添加和编辑截止日期的功能,在创建Todo时默认以当天为截止日期,也可自行选择截止日期,精确到天,长按每一条Todo可编辑截止日期,同样精确到天
2、Trae在修改过程中会反复验证语法是否正确,这一步应该可以提升在Xcode中构建成功的概率,减少因语法错误导致构建失败,Trae已经按上述要求添加了设置和编辑截止日期的功能,Xcode模拟器测试也已成功
3、接下来完善分组相关功能,比如点Todo界面右上角加号可以添加分组(目前已支持),在添加Todo时可以选择分组,默认放到用户创建的第一个分组里,长按每条Todo可编辑所属分组
4、Trae完成了上述需求,但应用存在一个问题,目前在创建Todo时,如果没有分组,应用中会提示请先创建分组,但点击无法创建分组,需要修改成这样:应用内预置“工作”和“生活”两个分组,在创建Todo时默认位于“工作”分组,且可以点击切换到其它分组(包含用户自行创建的分组)
5、同时给Trae提了另一个要求:以后除非我另做要求,都统一用iPhone 16模拟器来构建,但不在模拟器中进行测试,我自己会去Xcode中测试,但Trae貌似没有理会这个要求,也可能理解成了这是仅对上一条需求提的要求
6、发现Trae在构建成功后不会进行下一步,好像会卡在构建这步,即使底部的“终端”中已提示BUILD SUCCEEDED,当然可以选择“跳过”,没有任何影响
7、接下来完善TodayView,需在该界面显示截止日期为当天的Todo,可勾选完成,不需要其它长按菜单,如果没有符合要求的Todo,则该界面显示“今天没有待办事项 享受轻松的一天吧!”多次修改后未能完成,后来回想起之前Cursor在修改Today界面时,在 MainTabView.swift中,Today标签页显示的不是TodayView.swift组件,而是一个静态的“Today”文本,让Trae修改之后已经基本满足需求
8、下一步,让Trae添加Todo的删除和恢复机制,删除后进入回收站,可在设置界面进入回收站并恢复已删除的Todo,结合应用当前的功能写一个README文件
9、在Xcode中测试应用时再次出现了卡在启动界面,不进入Today界面的情况,但在Trae中进行测试时就正常,按指导清理了Xcode和模拟器缓存,但无效,之后暂时先在Trae的模拟器中进行测试
10、用Trae修正了在Today界面和Todo界面创建Todo和分组时,两个界面的数据同步问题,在其中任何一个界面创建Todo和分组时,都会同步显示在另一个界面
11、到现在已经把我在OpenRouter平台充的钱用完了,基本都是这两天在Trae中使用Claude Sonnet 4消耗的,这消耗的也太快了,当然Claude Sonnet 4的API价格比较贵也是原因之一,OpenRouter上的Claude Sonnet 4的价格是百万输入3美元,百万输出15美元,作为对比,DeepSeek-R1 0528的价格是百万输入和输出均为0.272美元
12、切换Trae的模型为Kimi-K2,先让它给应用增加回收站功能,可以集中查看已经删除的Todo条目,并且在右侧设置恢复按钮,可以恢复到这条Todo被删除时所在的分组中,Kimi-K2的表现好像还可以
13、决定让Kimi-K2来检查一下当前应用是否会在启动时卡在启动页,不进入Today界面,在对代码进行多次优化,比如优化数据加载逻辑,改进数据更新机制等等之后,在Xcode模拟器里测试应用仍然会卡在启动界面,但在Trae中测试时就可以正常使用,很奇怪
14、让Trae结合应用现有的功能,创建了一个README.md文件,放在应用文件的根目录里,今天到此结束

DevLog:2025年7月21日

1、继续让Cursor修正DoitWith卡在启动页的问题,结合昨天和今天修改的内容,猜测可能是因为Today页面存在问题导致卡在启动页,决定先让Cursor进一步简化应用功能试下,先去掉Today界面及相关代码
2、果然在去掉Today界面及相关代码后可以正常进入应用,并直接显示Todo页内容,之后让Cursor逐步将Today界面及功能加回来,比如先恢复Today界面,但不需要什么功能,只为测试应用能否正常打开,经测试应用确实可以正常打开,看来问题出在TodayView的具体实现上
3、逐步恢复Today界面和功能,先给这页添加标题“Today”和右上角的“设置”按钮,位置与Todo页的标题和设置按钮位置一致,顺便把启动页的副标题改成“Manage all you need to do.”
4、使用Xcode模拟器测试发现上述需求已达成,接下来继续恢复功能:
在Todo列表中点击右上角“+”,添加新Todo时,无法选择截止日期,只能添加标题,需要有可选择日期的窗口,默认选择今天,也可以手动选择之后的日期
5、Curso在实现上述需求的过程中又重复出现Ambiguous use of ‘toolbar(content:)’的问题,感觉又陷入了新的循环,决定让Cursor先去掉所有的选择日期、修改日期相关功能
6、发现Cursor在Pro试用到期之后,更多的是给到修改建议,而非之前的主动修改,在修改一个文件时,也会一部分一部分的修改,不会一次修改完整个文件,可能的确是在使用上有些限制了
7、让Trae对当前的项目进行了检查,Trae修正了目前存在的编译错误,目前已经可以正常打开,Trae还给出了如下建议,第一条是因为Cursor还没能完全去掉编辑截止日期相关的功能吗?
1.功能完善 :完成编辑截止日期功能的具体实现
2.UI优化 :考虑使用更现代的SwiftUI设计模式
3.数据模型 :考虑迁移到Core Data以获得更好的数据管理

DevLog:2025年7月20日

1、发现目前这个精简版的DoitWith存在几个问题,需要让Cursor来优化
1.设置中仍然有“Note数量”,需要删掉这一行
2.设置的数量统计改成这两个维度:进行中的Todo数量、已完成的Todo数量
3.设置中的外观选择,切换到深色时应用界面颜色没有变成深色,需要修正下
4.在Todo中添加新Todo时,目前无法选择截止日期,只能添加标题,需要出现选择日期的窗口,默认选择今天,也可以手动选择之后的日期
5.长按一条Todo,点击弹出菜单中的“修改截止日期”,需要出现选择日期的窗口,默认选择今天,也可以手动选择之后的日期
6.Today页面为空时显示的“今天没有待办事项 享受轻松的一天吧!”和绿色的对勾图标一起往下挪一些
7.需要增加启动页面,背景颜色为墨绿色,标题为应用名,副标题为“Manage all you need to do.”
2、吸取教训,每次只让Cursor改正几个问题,不一次性提出太多需求,改正几个问题之后立刻构建、在Xcode中用模拟器测试,先让Cursor修正“设置”页面的问题
3、Cursor在修正完成之后,反复卡在白屏或启动页面,无法进入应用

DevLog:2025年7月19日

1、Cursor的Pro试用到期,但之前DoitWith卡在启动页的问题仍未解决,转战Trae,先让Trae熟悉一下这个由Cursor创建的项目,然后让Trae检查卡在启动页面的原因,在检查并修正它发现的一些问题之后,结论仍然是存在重复的文件,它需要删除这些手动生成的Core Data文件,先拒绝了,耗时半小时,并未解决问题,且出现了两次“模型思考次数已达上限,输入“继续”后获得更多结果”
2、对Trae有些失望,Trae更新了2.0版本,继续让它操作之后仍然在不断尝试和重复之前进行过的的一些修改,不仅没有解决问题,甚至还导致使用Xcode查看项目文件时,Xcode频繁崩溃,参照Cursor给到的方法多次修正后仍然会闪退
3、决定让Cursor简化整个项目,将备忘录相关功能移除,数据存储方案也不再使用较为复杂的Core Data,这样也就不再需要富文本编辑器等功能,应用功能和文件结构都大幅简化,变成一个纯Todo类应用,可能一开始给的需求就太复杂了,简单一些会更少出错,之后再随着使用和对代码的熟悉程度的提升,丰富应用的功能
4、Cursor移除了NoteView及相关文件,删除了所有Core Data相关的实体、属性、初始化、模型文件,删除了Persistence.swift等持久化相关文件,MainTabView只保留Today和Todo两个Tab,之后对TodoView及其相关子视图进行修改,并提供UserDefaults(适合简单数据)和文件存储(适合结构化数据)两种本地存储方式,此处选择用UserDefaults
5、修改完成之后手动删除了一些重复文件,Xcode提示构建成功,且启动了模拟器,但不会自动打开App,也没有任何的错误提示,之后手动重建了项目,解决之前文件结构上的问题,但之后又多次让Cursor修正因之前使用Core Data,后来改用UserDefaults遗留的问题
6、偶然发现同一个问题在Cursor多次修改后仍然重复出错,不能正常构建,但在Xcode中参考Xcode的建议(建议代码、Fix)可以快速修正且完成构建,Cursor好像有时会陷入到一个循环里,反复修改,每次都保证说这次100%能够成功构建,100%可以解决问题,但就是解决不了

DevLog:2025年7月17日

1、继续让Cursor解决昨天的遗留问题,出现前述大量错误的原因不在于有重复的文件,而是Core Data的模型定义文件DoitWith.xcdatamodeld也出现在了Compile Sources阶段中,这会导致Xcode尝试编译一个非源代码文件,从而产生“Multiple commands produce”错误,需要在Compile Sources列表中删除 DoitWith.xcdatamodeld,只保留真正的Swift源代码文件
2、按此操作之后“Multiple commands produce”错误全部消失,继续让Cursor修正Persistence.swift文件的语法错误,Cursor反复删除并创建新的Persistence.swift文件
3、直接截取Xcode在构建时的错误提示给Cursor,会比让Cursor自己检查项目有没有问题更加直接,修复的速度也更快
4、一上午的时间都在修复各种问题,构建失败、发截图给Cursor、修复、再次构建失败、继续让Cursor修复问题,累计修复了有二十多条错误,而且今天在Cursor中构建测试时的速度非常慢
5、终于构建成功,但在Xcode模拟器中测试时,应用停留在白屏页面,不进入启动页,也不进入应用的Today页,让Cursor检查并修复一下问题,在多次修复错误之后,即使目前错误提示已经清零,仍然会停留在白屏状态,不进入应用,或者停在启动页面,不进入应用
6、多次修改之后仍然没有进展,Cursor给出的解决方案是再次移除并重新创建新的NSManagedObjectSubclass文件,再次重新创建之后仍然问题不断
7、多次由Cursor自动+手动修改之后,可以成功构建,但仍然停留在启动页面,不进入应用,今天先到这儿

DevLog:2025年7月16日

1、了解了下Cursor的订阅,虽然默认的Auto模式已经足以满足我的需求,但马上两周的免费试用期就要结束了,到时看看功能上有什么变化,如果功能严重受限,考虑订阅Cursor Pro,目前可以用支付宝支付
2、Cursor具备Agent、Ask、Manual、Background四种编程方式,可以根据需求选择,模型方面,Auto模式由Cursor根据任务类型和复杂程度自动判断使用哪个模型,也可以关闭Auto模式,指定模型
3、NoteWith和ChatWith由于涉及接入AI大模型,在上架时可能需要先备案,但备案手续复杂且审核时间长,考虑开发一款不需要进行备案的App
4、赶在Cursor的Pro试用过期之前,让Cursor再帮我开发一个新应用,吸取之前的教训,这次在一开始就提出了尽量详细的需求:
1.iOS平台,应用名称为DoitWith,采用SwiftUI开发
2.应用启动界面以墨绿色为底色,启动界面显示应用名DoitWith,下方一行为副标题“Todo and Note, in one App.”
3.应用界面分为Today、Todo、Note共三个tab,可在底部点击切换,三个tab的右上角都有加号和齿轮图标,Todo界面点加号可选择创建新Todo或创建新分组,笔记界面点加号可以创建新笔记,点击齿轮进入设置界面,Today列表、Todo列表和笔记列表的设计要足够简洁且风格一致一些
4.Today界面列出今天到期的Todo项目,可以长按每条Todo进行完成、重命名、修改、删除等操作
5.Todo界面可以自行设置组(默认有工作、生活两个分组,各有一条示例Todo)、可设置提醒时间,任务过期时文字变红并在文字前添加警告emoji,每条Todo都可以通过长按进行完成、重命名、修改、删除等操作,可将Todo在不同分组间拖动
6.笔记界面默认显示笔记列表,点击创建笔记按钮或笔记列表页右上角加号可创建笔记,采用富文本编辑器,支持常用的文字格式设置,选中文字后即可在底部调节格式
7.设置界面可查看Todo和Note的数量
8.采用你推荐的数据存储方式
5、Cursor对我的需求进行细化和明确,给出了技术选型与架构建议:
-UI 框架:SwiftUI(官方推荐,现代、易维护)
-数据存储:推荐使用 Core Data(苹果官方,适合本地结构化数据,支持分组、提醒、富文本等需求)
-富文本编辑:使用 SwiftUI + NSAttributedString,或集成第三方如 TextEditorPlus(如需更强大功能)
-本地通知:用于 Todo 提醒
-MVVM 架构:便于维护和扩展
以及任务拆解:
-项目初始化与启动页开发
-TabView 主界面搭建
-Today、Todo、Note 三个 Tab 的基本结构
-加号与齿轮按钮功能实现
-Todo 分组、拖动、提醒、过期样式
-Note 富文本编辑器集成
-设置界面开发
-数据存储(Core Data)建模与集成
-本地通知集成
-UI 优化与风格统一
6、Cursor让我在 Xcode 里手动新建一个 SwiftUI iOS App(建议命名为“DoitWith”,语言选择 Swift,生命周期选择 SwiftUI App,勾选“Use Core Data”),之后再进行后续操作
7、在Cursor创建应用的过程中,有两次需要我手动创建NSManagedObject Subclass,昨天在修改NoteWith时也出现了这种情况,猜测可能是因为在数据存储方面采用了Core Data
8、在集成富文本编辑器时,Cursor建议我使用RichTextKit的包管理集成,且Cursor无法自行完成这一操作,需要我在Xcode中Add Packages,集成RichTextKit,但我个人不太喜欢这种功能较为复杂的三方库,于是询问Cursor:有没有iOS自带的组件可以实现类似需求?我对这个编辑器的功能要求不是很高
9、Cursor推荐使用UIKit的UITextViews实现基础富文本编辑,然后通过UIViewRepresentable桥接到SwiftUI,这样无需引入第三方库,且兼容性和性能都很好
10、Cursor在创建完成后提示构建成功,但再次出现了昨天NoteWith的问题“可能有重复的NSManagedObject子类文件,或者Xcode项目引用了同一份文件的多份引用”,明天再看怎么解决