使用 Cocoa 和 Core Data 自动保存

2024-03-02

我正在开发一个非基于文档的核心数据应用程序。

我希望更改发生时能够保存。这是用户对此类应用程序的期望。这也是苹果公司实施的iPhoto or iTunes.

一种强力方法是设置一个计时器来频繁保存。然后,由保存触发的方法将吞掉所有验证错误,以免打扰用户。只有在退出时,用户才会被窃听来整理数据以便保存。恕我直言,这种方法很糟糕。

所以我在想,一定有一种方法可以以某种方式将储蓄与诸如NSEditor协议。每次用户(或控制器)完成数据编辑时,应以某种方式通知应用程序委托触发保存操作。问题是我不太知道该去哪里寻找。

我认为,对于更复杂的操作,可能需要进行一些交叉验证,我会向用户提供一些与专用接口相关的界面NSManagedObjectContext.


在 AppKit 应用程序中的每个事件结束时,CoreData 将为您运行一个 -processPendingTransactions。

这样做的一个副作用是,如果您已向 NSManagedObjectContext 注册以接收更改通知,那么您将在每个事件结束时被调用。

因此,例如,在通知处理程序中,您可以调用仅告诉上下文进行保存。

但是,您可能会偏执于在同一上下文的回调中对上下文进行保存,因此如果您执行 PerformSelector:@selector(save:) afterDelay: 将保存推到之后,您可能会感觉更好-processPendingTransactions 已完成。

您甚至可以在 -save: 选择器上执行取消操作,并将延迟设置为 5 秒左右,因此,如果用户或应用程序正在进行一堆更改,它们将全部合并到一个保存中。

事实上,这正是 Delicious Library 1.0-1.09 的工作原理。

-Wil

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Cocoa 和 Core Data 自动保存 的相关文章

  • 在 Cocoa 应用程序中验证用户输入的 URL 的最佳方法是什么?

    我正在尝试构建一个自制的网络浏览器 以更加熟练地使用 Cocoa 我需要一种好方法来验证用户是否输入了有效的 URL 我尝试过一些正则表达式 但 NSString 有一些有趣的怪癖 并且不喜欢我见过的大多数正则表达式使用的一些反引号 你可以
  • 使用 NSMutableDictionary 与 NSMutableArray 造成的性能损失>

    我正在考虑使用 NSMutableDictionary 代替我当前的 NSMutableArray 这主要是出于 KVC KVO 的原因 该集合将在我的绘图方法的内循环中经历严重的变化 如果我继续进行此替换 性能是否会受到重大影响 干杯 道
  • NSDateComponents - EXC_BAD_ACCESS 错误

    我确信有一个简单的答案的基本问题 我正在尝试获取照片的时间戳 当我尝试访问 NSDateComponents 以检索特定日期元素 例如 日 时 我收到 EXC BAD ACCESS 错误 首先 我的代码的相关部分 formattedDate
  • 删除核心数据中的对象

    我的核心数据模型中有一个实体 如下所示 interface Selection NSManagedObject property nonatomic retain NSString book id property nonatomic re
  • 阻止 OpenGL.framework 在 Cocoa 应用程序中加载

    我的应用程序链接到这些框架 Cocoa Framework AppKit Framework CoreData Framework Foundation Framework 请注意 OpenGL Framework 是NOT已链接 但是 设
  • OSX/Cocoa 应用程序通常使用什么位置来存储数据文件?

    他们是否将它们写入 存储在应用程序包 包本身中 或者其他一些规范位置 还是好像没有什么标准 文件通常会进入 Library Application Support Your App 偏好设置进去 Library Preferences
  • 如何在核心数据中应用group by子句

    我正在实现 tableview 我想在 tableview 部分显示类名 并且我正在尝试获取 使用核心数据实现的数据库中的类值 我想使用类名上的 group by 子句获取数据 这是我的代码 AppDelegate appDelegate
  • Coredata错误setObjectForKey:对象不能为nil

    我正在尝试检查我的核心数据存储中是否有任何数据作为我的应用程序的恢复类型 基本上 如果用户处于最终视图 则 coredata 中会有一些数据不断更新 因此 他们处于最终视图中 然后应用程序崩溃 或者他们将其置于睡眠状态 然后应用程序从内存中
  • 使用 pyobjc 将元数据写入 pdf

    我正在尝试使用以下 python 代码将元数据写入 pdf 文件 from Foundation import from Quartz import url NSURL fileURLWithPath test pdf pdfdoc PDF
  • NSFetchedResultsController 中的部分名称与托管对象值不匹配

    我正在使用 NSFetchedResultsController 用大约 1500 个实体的中等大小的核心数据存储的结果填充 UITableView 结果控制器相当标准 一些潜在错误的 热点 并不适合此设置 在与其使用的同一 主 线程上创建
  • 使用 NSCoder 编码 CGPoint 结构

    如何编码和解码CGPoint结构使用NSCoder 编码 CGPoint point point from somewhere NSValue pointValue NSValue value point withObjCType enco
  • Cocoa - 在另一个 xib 上显示 xib

    谁能告诉我如何 或指导我有关信息 在另一个 xib 笔尖 上显示 xib 笔尖 我希望如何放置它 以便我可以以编程方式将它移动到主笔尖 就像这样 这显然不起作用 void drawRect NSRect dirtyRect NSRect c
  • Cocoa 中播客应用程序的 Apple Api

    我正在为 mac 创建一个播客应用程序 用户可以在其中搜索 itunes 上的播客 是否有苹果内置的 api 我可以通过它从苹果 itunes 搜索和播放播客 或任何其他用于从 itunes 搜索播客的 api 谢谢 Edit 现在我找到并
  • 每个 CPU 核心处于 C0 电源状态的时间

    任何帮助弄清楚如何做到这一点都会很棒 在过去一秒内 每个 CPU 核心处于 C0 电源状态的时间有多少 这是针对 Mac 应用程序的 因此需要 Objective C cocoa 和 c OS X 没有任何公开 CPU c 状态的 API
  • 使用 Swift 创建 NSAlert

    我有在 Objective C 中创建和 NSAlert 的代码 但我现在想在 Swift 中创建它 该警报旨在确认用户想要删除文档 我想要 删除 按钮来运行删除功能 而 取消 按钮只是为了消除警报 我怎样才能用 Swift 写这个 NSA
  • Excel 工作表到 iPhone 数据 -- A 点到 B 点

    尽可能简单 我有一个非常简单的 Excel 电子表格 只有 1000 多条记录 我想将其用作 iPhone 应用程序的静态数据源 最好的进攻计划是什么 我心中的可能性 1 直接读取XLS作为数据源 是否有Obj C库用于此 2 将XLS 转
  • iOS 使用 NSColor 与 UIColor?

    有什么区别UIColor and NSColor 什么时候会使用每一种 我碰到NSColor在试图弄清楚的同时UIColor用于 iOS 中的属性字符串 我理解使用UIColor对于 UIKit 等 但我不认为NSColor对于这种事情确实
  • 无法按住 CTRL+拖动 NSButton 到自定义 NSView 标题

    我想创建一个自定义的NSTableCellView由 Interface Builder 实例化 我已将 Table Cell View 类设置为MyTableCellView 并正确创建MyTableCellView NSTableCel
  • 核心数据对多关系。它们是延迟加载吗?

    我在核心数据 适用于 iPhone 中有典型的模型 其中包含部门和员工 部门 gt gt 员工 我不想每次加载时都加载一个部门的所有员工 所以我想将员工创建为获取的属性 我想我可以定义一些像这样的谓词 employee deparmentI
  • DatePicker 停止 CoreData 按预期工作

    我有一个应用程序 它保存 UIDatePicker 中的文本和日期 然后在您回到 UIDatePicker 中的该日期时显示该注释 效果很好 只有我发现将 UIDatePicker 日期设置为今天会停止 CoreData 工作 只有当我运行

随机推荐

  • 如何使用反引号捕获 time(1) 的经过时间输出?

    我正在尝试获取输出time http www kernel org doc man pages online pages man1 time 1 html使用以下命令 我唯一想要的就是得到经过的时间 但我什么也没得到 result usr
  • WiX:多个 MSI 文件?

    Visual Studio 的解决方案中是否可以有一个 WiX Installer 项目 但该项目输出多个安装程序文件 通过具有多个 wxs 文件或多个
  • 如何在C++中实现向量混合?

    struct vec2 union struct float x y struct float r g struct float s t vec2 vec2 float a float b x a y b struct vec3 union
  • sql Management Studio 超过 7 列的 t-sql 唯一约束

    我想在表中为 7 列创建唯一约束 因此当有人想要在此表中插入数据时 这些列在一起是唯一的 在oracle中这很简单 但是在这里 我可以通过sql代码来做到这一点 CREATE TABLE Example Col1 int NOT NULL
  • ImageMagick 不再在 AWS Lambda 中转换 pdf

    过去 18 个月里 我在 S3 对象上运行了一个 AWS Lambda 函数 大约一个月前 它在一次小更新后失效了 我已恢复它 但它仍然损坏 我研究过使用 ImageMagick 进行最基本的 pdf 转换 但没有成功 所以我认为 AWS
  • JaCoCo 在跳过 JaCoCo 执行后才生成 jacoco.exec

    我在我的模块之一中通过 JaCoCo 生成 AHP 报告时遇到问题 当构建开始时 我看到 JaCoCo 正确设置 argLine 为 INFO jacoco agent argLine set to javaagent lt gt m2 r
  • Sidekiq 中是否有控制台命令可以查看队列中的内容并清除队列?

    我习惯使用delayed jobs方法进入控制台来查看队列中的内容 以及在需要时轻松清除队列的方法 Sidekiq 中有类似的命令吗 谢谢 有一个符合人体工学的用于查看和管理队列的 API https github com mperham
  • 如果所有子节点都分配了类,则选择父节点

    我正在寻找一种有效的方法来遍历无序列表 该列表包含多个级别 其中包含类 selected 如果组中的所有 UL LI 都具有 selected 类 我需要将 selected 类添加到子 UL 的父 LI 中 ul li one lt th
  • 从 C++ 使用 Neo4j 数据库

    我的问题是我想从 C 程序使用 Neo4j 数据库 我读了很多 但仍然不知道如何开始 首先 我想在 Neo4j 和 C 之间建立连接 并且我想从 C 程序创建节点 任何人都有示例代码 或者有人可以帮忙 我该如何开始 对于即将推出的二进制远程
  • Rserve - 一台服务器上有多个实例?

    是否可以在一台服务器上同时运行 Rserve 的多个实例 例如 10 个实例意味着 10 个独立的 R 工作区通过同一台计算机上的 Rserve 监听不同端口 在 Oleksandr指定的同一文档中 它在第5 6页明确指出 在Windows
  • 透视变换三角点

    我试图找到从一个三角形到另一个三角形的等效点 理想情况下 我希望能够给出三角形 A 的 3 个点和三角形 B 的 3 个点 然后计算变换矩阵 然后将其应用于该点以找到等效点 我为此找到了一些 JavaScript 库 方法 但它们都使用四边
  • 使用 JavaScript 的 Chrome 和 Safari XSLT

    我有以下应用 XSLT 样式的代码 Test Xml xslTransform function xml xsl try code for IE if window ActiveXObject ex xml transformNode xs
  • 看不到 Safari 开发者 Timeline 的 Memory Instrument

    我正在尝试分析 Safari 浏览器中的 Web 应用程序内存使用情况 我在几个网站上看到 Safari 的 Web Inspector Timeline 可用于分析 Web 应用程序内存 但我没有看到 内存 选项 这是我所看到的 以下网站
  • 在 rich:dataTable 中使用 a4j:repeat 或 ui:repeat 无法正确呈现单选按钮

    使用时
  • 使复合小部件可拖动时出现问题

    我对 gwt n dnd 相对较新 我创建了一个复合小部件 当我尝试使复合小部件的对象可拖动时 它会抛出异常 dragHandle 必须实现 HasMouseDownHandlers HasMouseUpHandlers HasMouseM
  • Expression.ToString() 有效吗?

    我有一个生成的 lambda 但是当我想观看它时 它就像一个普通的 lambda 它只是不显示任何内容 当我打电话时expr Body ToString 我得到以下信息 var compareA 但表达式的 DebugView 工作正常 L
  • 如何使用两个不同的节点版本运行两个不同的nodejs应用程序[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们有两个 Node js 应用程序 这两个应用程序不能在同一节点版本中运行 一个应用程序只能在node4 8 3中运行 另一个应用程
  • MapFragment 样式为 Dialog 导致 TextView 透明

    这是设置 我正在构建和显示样式为居中对话框的活动 这是为了显示不应在设备上全屏显示的分层内容 一种类型的内容是地图 所以我已经成功地将 MapFragment 加载到对话框样式的 FragmentActivity 中 这确实有效 问题是当我
  • 在 Python、NumPy 和 R 中创建相同的随机数序列

    Python NumPy 和 R 都使用相同的算法 Mersenne Twister 来生成随机数序列 因此 从理论上讲 设置相同的种子应该会在所有 3 个中产生相同的随机数序列 但事实并非如此 我认为这 3 个实现使用不同的参数导致了这种
  • 使用 Cocoa 和 Core Data 自动保存

    我正在开发一个非基于文档的核心数据应用程序 我希望更改发生时能够保存 这是用户对此类应用程序的期望 这也是苹果公司实施的iPhoto or iTunes 一种强力方法是设置一个计时器来频繁保存 然后 由保存触发的方法将吞掉所有验证错误 以免