NSDocument 和 CoreData 是可能的组合,还是 NSPersistentDocument 是唯一的方法?

2023-12-27

我正在制作一个应用程序,为我学校的人们创建课程时间表。这是我对应用程序的粗略设计:

我希望我的 NSDocument 子类代表个人的时间表。这个想法是,他们打开一个文档,并且可以将池中的课程添加到他们的时间表中,然后保存、共享、打开等。因此时间表将存储在用户选择的外部文件中。

我想使用 CoreData 来存储学生可以选择的所有课程。这些不会随着时间表的创建和编辑而改变,而是可能仅在应用程序启动时检查课程信息的更新时改变。

这似乎是构建我的应用程序的逻辑方式。问题是,当我创建一个基于 NSDocument 的应用程序并检查use CoreDatabox,它没有使其成为具有 CoreData 功能的基于 NSDocument 的应用程序,而是使其成为基于 NSPersistentDocument 的应用程序。

我认为这不是我想要的行为。有没有办法使用 CoreData,但仍然拥有基于 NSDocument 的应用程序?或者 NSPersistentDocument 到底是我应该使用的吗?我是否误解了整个 NS*Document 业务?您对我的应用程序结构有什么建议吗?

谢谢你的帮助!


是的,您可以使用 Core Data,而不使用NSPersistentDocument。只需实例化NSPersistentStoreCoordinator and NSManagedObjectContext直接地。这是一些代码:如何创建 NSManagedObjectContext https://stackoverflow.com/questions/3597071/how-do-you-create-a-nsmanagedobjectcontext

如果您想在多个目录之间共享目录实例NSDocument实例,并且不想将目录与每个文档一起保存,这是一个好方法。您的应用程序或应用程序委托可以负责加载课程目录,您的文档可以负责加载和保存单个学生的时间表。您必须自己实现这一点,例如使用带密钥的归档程序,或者自己编写一个 plist。

相反,如果您愿意,您可以进一步利用核心数据。代表学生日程NSManagedObject并让NSPersistentDocument处理加载和保存上下文。您可以免费获得许多有用的功能,例如撤消-重做。

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

NSDocument 和 CoreData 是可能的组合,还是 NSPersistentDocument 是唯一的方法? 的相关文章

  • UIWebView 中横向模式的 Youtube 视频

    我的申请不是为了风景而做的 但是当我打开我的 YouTube 频道时UIWeb视图和一个用户发布视频 它出现在肖像中 我想让它在用户旋转 iPhone 时以横向模式显示 How to 启用横向模式如本例所示 我知道有一些 肮脏的黑客 可以做
  • NSImage 到 NSBitmapImageRep

    如何将 NSImage 转换为 NSBitmapImageRep 我有代码 NSBitmapImageRep bitmapImageRepresentation NSBitmapImageRep ret NSBitmapImageRep s
  • 如何使用自动布局约束在 ios xcode 6.3 中创建多个标签之间的相等间距

    如何实现多个标签的自动布局 如图所示 我也需要在所有标签和侧面空间之间保持相对相等的间距 我想在标签 1 2 3 4 之间保持相等的间距 我无法使用自动布局在多个 iPhone 版本的标签之间保持相对相等的间距 我能够使用以下步骤解决 第
  • Swift 2.0 中的 countForFetchRequest

    我正在尝试使用countForFetchRequestSwift 2 0 中托管对象上下文上的方法 我注意到错误处理executeFetchRequest已更改为新的do try catch syntax func executeFetch
  • C++11 的 LLVM&Clang 支持

    我有一些为 MS VC 10 编写的代码 我使用 C 11 特别是像这样的表达式 std function
  • 请求开发者证书的分发配置文件

    使用 Xcode 9 1 构建 iOS 应用程序后 我尝试将其存档 但我收到以下错误消息 配置文件 MyAppProfile 不包括签名证书 iPhone Developer My Name X1YZ2AB3CD 仔细观察后 我发现 MyA
  • 阻止 OpenGL.framework 在 Cocoa 应用程序中加载

    我的应用程序链接到这些框架 Cocoa Framework AppKit Framework CoreData Framework Foundation Framework 请注意 OpenGL Framework 是NOT已链接 但是 设
  • 如何在 OSX 上使用多线程安装 XGBoost

    我正在尝试按照指南在我的 mac osx 10 12 1 上安装 xgboosthere http xgboost readthedocs io en latest build html building on osx但我遇到了一些问题 S
  • 如何在Mac的cocoa应用程序中允许用户的主文件夹的权限

    我有一个 Mac 应用程序 其中我正在从用户的主目录中删除一些数据 我的应用程序被拒绝 原因如下 The app only finds files in the Downloads folder It would be appropriat
  • Xcode 9 - Alamofire Pod。命令 /bin/sh 失败,退出代码为 1

    Users Alex Library Developer Xcode DerivedData MyProject ehabmnclpzlywhabrefntacibonm Build Intermediates noindex Archiv
  • OSX 上的 XAMPP 默认文件夹

    入门手册说我可以将文件放入 Applications XAMPP htdocs 文件夹和 Sites 文件夹中 但是当我将文件放入 Sites 文件夹中时 它会出现以下错误 Server error The server encounter
  • 如何在iPhone模拟器中更改时间和时区?

    如何更改时间和时区iPhone http en wikipedia org wiki IPhone模拟器 我猜它使用您的系统时区 因此更改系统偏好设置中的 TZ 可能会成功
  • AVFoundation (AVPlayer) 支持的格式?没有 .vob 或 .mpg 容器?

    在 Mac 应用程序中使用 AVPlayer 可以全屏播放文件夹中的随机视频 但当我尝试播放 vob 文件或 mpg 文件时 我只会看到黑屏 黑屏的持续时间与视频持续时间一样长 AVFoundation 不支持从这些容器播放吗 我认为既然它
  • XCTestCase:ld:未找到架构 x86_64 的符号

    我只是想实现我的第一个 XCTestCase 实现 一切都构建良好 但是当我执行测试用例时 我面临 构建失败 Undefined symbols for architecture x86 64 OBJC CLASS Node referen
  • 保存时出现 iphone 核心数据未解决的错误

    尝试保存时 我从核心数据中收到一条奇怪的错误消息 但问题是错误不可重现 在执行不同任务时 它会在不同时间出现 错误消息 Unresolved error Domain NSCocoaErrorDomain Code 1560 UserInf
  • 在 Intel 机器上构建 Apple Silicon 二进制文件

    如何在 macOS 11 Intel 上编译 C 项目以在 Silicon 上运行 我当前的构建脚本很简单 configure make sudo make install 我尝试过使用 host and target标志与aarch64
  • 枚举 NSString 的最佳方法

    我正在寻找枚举 objc 对象 例如 NSString 的方法 我记得 Xcode4 版本中有一个新功能 它提供了一种新的 enum 方法 但不清楚 有人知道吗 好吧 我自己回答 我想我犯了一个错误 这就是我上面提到的新功能 typedef
  • Docker OSX:从容器连接到主机端口

    我的问题 我正在尝试在 docker 容器上安装 Flask 应用程序 该应用程序需要通过以下方式安装一些软件包pip https pip pypa io en stable 我在端口 9000 上使用本地 主机 而不是容器 pip 存储库
  • iOS:如何在 UITabBarItem 中添加下划线

    我正在使用一个应用程序 我需要在其中添加下划线UITabbarItem 所以我想在所选下添加下划线UITabbarItem在默认情况下UITabbarcontroller of iOS 我已经创建了子类UITabbarcontroller但
  • iOS:启动图像多语言

    我有一个多语言应用程序 我的问题是启动图像 根据设备的语言使用启动图像的方法是什么 有什么东西在info plist file 解决方案是像项目中的任何其他资源一样本地化 Default png 从 Xcode 的项目列表中选择 Defau

随机推荐