06 - writeToFile写入不成功/无法写入的原因

本文探讨了使用writeToFile方法时遇到的错误原因及解决方案。当数组或字典包含非属性列表对象时,会出现写入失败的问题。文章分析了具体原因,并提出了解决方案,即避免在数据中包含null值。

error: writeToFile写入不成功/无法写入的原因

[cacheDic writeToFile:cacheURL atomically:YES];

后却返回no,查阅手册发现:

If an array or dictionary contains objects that are not property-list objects, then you cannot save and restore the hierarchy of data using the various property-list methods and functions.

分析:

  1. 也就说要存的不能为你自定义的对象,也不能是null
  2. 服务器返回数据中含有数个null

fix - BUG: OC暂时无法解决,在线解析数据

简书地址:http://www.jianshu.com/users/227bbeb09f91/latest_articles
CodeSign /Users/g10macmini1/Library/Developer/Xcode/DerivedData/Unity-iPhone-dislabfktnkpxiadhajppmsnjevc/Build/Intermediates.noindex/ArchiveIntermediates/Unity-iPhone/InstallationBuildProductsLocation/Applications/ProductName.app/Frameworks/UltraGlobalSDK.framework (in target 'Unity-iPhone' from project 'Unity-iPhone') cd /Volumes/ssd/jenkinsworkspace/workspace/QQ13_client_AppPackage_trunk/BuildOutput/xcodeBuild Signing Identity: "iPhone Distribution: Aniplex Inc. (8ARKQ2E7H5)" Provisioning Profile: "Blue Exorcist Japanese New Distribution" (ac68be12-e3de-4bbd-8f79-5f18bc0d517f) /usr/bin/codesign --force --sign 1120F5C9E9CA86E8B4AF44096D7274F82BB265FA --preserve-metadata\=identifier,entitlements,flags --generate-entitlement-der /Users/g10macmini1/Library/Developer/Xcode/DerivedData/Unity-iPhone-dislabfktnkpxiadhajppmsnjevc/Build/Intermediates.noindex/ArchiveIntermediates/Unity-iPhone/InstallationBuildProductsLocation/Applications/ProductName.app/Frameworks/UltraGlobalSDK.framework ProcessInfoPlistFile /Users/g10macmini1/Library/Developer/Xcode/DerivedData/Unity-iPhone-dislabfktnkpxiadhajppmsnjevc/Build/Intermediates.noindex/ArchiveIntermediates/Unity-iPhone/InstallationBuildProductsLocation/Applications/ProductName.app/Info.plist /Volumes/ssd/jenkinsworkspace/workspace/QQ13_client_AppPackage_trunk/BuildOutput/xcodeBuild/Info.plist (in target 'Unity-iPhone' from project 'Unity-iPhone') cd /Volumes/ssd/jenkinsworkspace/workspace/QQ13_client_AppPackage_trunk/BuildOutput/xcodeBuild builtin-infoPlistUtility /Volumes/ssd/jenkinsworkspace/workspace/QQ13_client_AppPackage_trunk/BuildOutput/xcodeBuild/Info.plist -producttype com.apple.product-type.application -genpkginfo /Users/g10macmini1/Library/Developer/Xcode/DerivedData/Unity-iPhone-dislabfktnkpxiadhajppmsnjevc/Build/Intermediates.noindex/ArchiveIntermediates/Unity-iPhone/InstallationBuildProductsLocation/Applications/ProductName.app/PkgInfo -expandbuilds
最新发布
10-28
graph TD %% 关键函数对应节点:[TaskDialog.exec()] --> B; [TaskManager::addTask()] --> F A[用户点击添加按钮] --> B[弹出任务编辑对话框] B --> C{输入验证} subgraph UI交互 (蓝色) A B[弹出任务编辑对话框<br/><small>TaskDialog.exec()</small>] K[刷新UI显示] end C -->|成功| D[构造Task对象] C -->|失败| E[显示错误提示] D --> F[TaskManager.addTask()] F --> G{执行数据校验} subgraph ❗异常处理 (红色) E[显示错误提示] L[数据校验失败] M[JSON序列化失败] N[文件写入失败] end G -->|成功| H[JSON序列化] G -->|失败| L --> E H --> I[写入文件] H -->|失败| M --> E I -->|成功| J[触发tasksChanged信号] I -->|失败| N --> E J --> K subgraph Qt信号槽通信 J:::signalStyle end %% 样式定义 classDef uiStyle fill:#87CEFA80,stroke:#333 classDef logicStyle fill:#FFA50080,stroke:#333 classDef dataStyle fill:#9370DB80,stroke:#333 classDef storageStyle fill:#32CD3280,stroke:#333 classDef errorStyle fill:#FF450080,stroke:#333 classDef signalStyle stroke-dasharray: 5,5,stroke:#666,fill:#FFFFFF80 class A,B,K uiStyle class C,D,F,G logicStyle class H dataStyle class I storageStyle class E,L,M,N errorStyle ```** 核心特点 **: - 采用模块化分组(UI交互/业务逻辑/数据处理等) - 完整异常处理闭环(输入验证/数据校验/序列化/存储失败- Qt信号槽通信使用虚线框标注 - 关键函数调用内联标注(如`TaskDialog.exec()`) #### 📝 技术细节补充 ##### 1. 源码文件映射 | 流程节点 | 实现文件 | 核心函数 | |---------|---------|---------| | A/B/E/K | `taskdialog.cpp`<br>`mainwindow.cpp` | `TaskDialog::exec()`<br>`MainWindow::onTaskAdded()` | | C/D/F/G | `taskmanager.cpp`<br>`task.cpp` | `TaskManager::addTask()`<br>`Task::validate()` | | H | `taskserializer.cpp` | `TaskSerializer::toJson()` | | I | `storagemanager.cpp` | `StorageManager::writeToFile()` | | J | `taskmanager.h` | `signals: tasksChanged()` | ##### 2. 时间复杂度分析 - **输入验证(C)**:O(1) - 固定字段校验 - **数据校验(G)**:O(n) - n为任务属性数量 - **JSON序列化(H)**:O(m) - m为任务数据总字节数 - **文件写入(I)**:O(m) - 磁盘I/O操作 - **UI刷新(K)**:O(k) - k为任务列表项数量(使用QListView委托优化)用上面的提示词生成图片
07-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值