使用简洁形式的 NSManagedObjectID URI?

2024-04-28

在我的应用程序中,我使用 Core Data 以及不使用 Core Data 的附加 sqlite 数据库。在这个附加数据库中,我有一些列存储对NSManagedObject实例通过每个实例的NSManagedObjectID.

我得到一个实例objectId作为存储的字符串,如下所示:

instance.objectID.URIRepresentation.absoluteString

这会导致字符串看起来像这样:

x-coredata://EE13EA1E-D5F4-4E38-986D-3F4B0B03AEE4/ClassName/p658

我稍后可以用它来获取NSManagedObject像这样的实例:

[persistentStoreCoordinator managedObjectIDForURIRepresentation:[NSURL URLWithString:uriString]];

由于这些 URI 字符串很冗长并且包含冗余信息,因此我想仅保存每个字符串的独特方面,以节省数据库空间并提高查询性能。因此,在上面的示例中,只是“658”而不是整个 URI 字符串。

所以第一个问题是:什么是提取唯一尾部的好方法?NSManagedObjectID?其次,一旦我存储了它,我以后如何使用它来获取实例?

我想避免字符串操作,因为这感觉很恶心,但如果这是唯一的方法,我会考虑它。我唯一的困惑是上面示例中的“EE13EA1E-D5F4-4E38-986D-3F4B0B03AEE4”部分来自何处。我如何访问该值以重建有效的 URI?


您可以尝试在包含大量数据的属性上设置“允许外部存储”标志,并查看是否不需要单独的、直接管理的数据库。

否则,URIRepresentation返回一个NSURL,因此不需要“讨厌的”字符串操作。只需使用NSURL方法。 ;^) 下面是如何分解它:

NSURL *instanceURL = instance.objectID.URIRepresentation;
NSURL *classURL = [instanceURL URLByDeletingLastPathComponent];
NSString *classString = [classURL absoluteString];
NSString *instanceId = [instanceURL lastPathComponent];

以下是稍后将其重新组合在一起的方法:

NSURL *reconstructedClassURL = [NSURL URLWithString:classString];
NSURL *reconstructedInstanceURL = [reconstructedClassURL
    URLByAppendingPathComponent:instanceId];
NSManagedObjectID *objectID = [moc.persistentStoreCoordinator
    managedObjectIDForURIRepresentation:reconstructedInstanceURL];
NSManagedObject *reconstructedInstance = [moc objectWithID:objectID];

请注意,自从URIRepresentation被记录为“可存档”,因此从 Core Data 提供给您的组件重建一个并没有什么坏处。 Core Data 不知道您将其拆开并重新组装在一起。

但是,Apple 可以更改返回的格式URIRepresentation未来,只要managedObjectIDForURIRepresentation:继续接受旧格式。这意味着上面的代码分解了URIRepresentation could有一天停止工作。

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

使用简洁形式的 NSManagedObjectID URI? 的相关文章

  • iOS 13 UIActivityViewController 在图像保存后自动呈现以前的 VC

    我正在尝试实现 将图像保存到库 功能 然后返回到当前视图控制器 但在新的 iOS 13 上 它会返回到呈现当前视图控制器的视图控制器 PHPhotoLibrary requestAuthorization status PHAuthoriz
  • 如何将任意颜色的色度键滤镜应用到实时摄像头源ios?

    基本上我想将色度键滤镜应用到 ios 实时摄像头源 但我希望用户选择将被另一种颜色替换的颜色 我找到了一些使用绿屏的示例 但我不知道如何动态替换颜色而不仅仅是绿色 知道如何以最佳性能实现这一目标吗 您之前曾询问过我的情况GPUImage h
  • 点击后退按钮时,iCarousel 会显示在上一页

    当我按下后退按钮时 这iCarousel仍然显示 1 秒 为什么会发生这种情况以及如何阻止这种情况 我已经使用故事板创建了 iCarosel 视图 void viewDidUnload super viewDidUnload self ca
  • UIButton 触摸事件落入底层视图

    我创建了一个小UIView其中包含两个UIButton是 视图响应UITapGesture事件 按钮应该响应TouchUpInside 但是当我点击按钮时 响应者是底层视图 并且点击手势选择器被触发 寻找意见或建议 您可以修改橙色视图中响应
  • 如果部署目标 < 基础 sdk,如何检查是否使用了不可用的方法?

    我想知道当部署目标低于基础 SDK 时 您如何检查代码是否不调用不可用的方法 可以在 SDK 等于部署目标的设备上运行应用程序 但我搜索一种更 自动 的方式 任何想法 问候 昆汀 最简单的方法是使用 IPHONE OS VERSION MA
  • iOS 中输入字段显示不同大小

    我有一个带有背景和固定宽度 高度的输入字段 它在我桌面上的所有浏览器中看起来都很好 但由于某种原因 它看起来更大iPad and iPhone 我在 CSS 中尝试了一些技巧 但到目前为止没有任何效果 width 120px importa
  • XCODE:如何从设备获取/验证准确的时间戳

    在没有互联网连接的情况下是否可以获得 NTP 或准确的时间戳 我不能接受 不信任带有 NSDate date 的设备时间戳 因为它可以由用户修改 并且我的应用程序将通过修改系统日期和时间而被黑客攻击 除此之外 是否有任何方法可以检查系统日期
  • 在实现文件中声明接口(Objective-C)

    在上一个版本的 xCode 4 3 中 我看到了预定义模板 例如我们的 Master Detail 模板 其中接口声明是在 m 文件中进行的 例如 在文件 MyFile h 中有 interface MyFile property nona
  • 为什么这会破坏 UILabel adjustmentFontSizeToFitWidth?

    iOS 7 Xcode 5 使用 UILabel 此代码可以工作 自动调整文本大小以适应 self testLabel numberOfLines 0 self testLabel lineBreakMode NSLineBreakByWo
  • 在选择器视图中为行实现的标题没有改变字体?

    我尝试更改选择器视图中标题的字体 但由于某种原因我不能 我可以更改标题的颜色 但字体保持不变 func pickerView pickerView UIPickerView attributedTitleForRow row Int for
  • 在 iPhone 5 的横向模式下启动启动画面

    我们的通用应用程序仅适用于横向模式 我们需要为 iPhone 4 和 iPhone 5 添加启动画面 对于 iPhone 5 的肖像 我们使用 email protected cdn cgi l email protection 如何为 i
  • 推送通知需要很长时间才能到达

    我在适用于 iOS 和 Android 的 Adob e Air 应用程序中遇到推送通知的奇怪问题 我正在使用 Milkman Games 的 Easy Push ANE 以及 One Signal 服务 问题是通知确实会到达 但有时 随机
  • UIView 内的 UIButton 目标操作

    我有一个习惯UIView我创建了一个UIButton 在该视图中 我有以下代码 func setupViews menuControlButton addTarget self action toggleButton forControlE
  • Objective C - ARC - 何时使用@autoreleasepool

    我读了一些关于 ARC 的文章 看到了这个 interface Address NSObject public NSString city end implementation Address Address init NSString c
  • 使用 PHP 和 jSON 从 MySQL 获取 UIImage

    我正在开发一个小型新闻阅读器 它通过对 URL 执行 POST 请求来从网站检索信息 响应是一个带有未读新闻的 JSON 对象 例如 应用程序上的最新新闻的时间戳为 2013 03 01 当用户刷新表时 它会发布 domain com ap
  • 空 NSDatePicker

    你好 是否可以让 NSDatePicker 代表 nil 对象 类似 或任何其他方式 谢谢 拉杜 简短回答 否 NSDatePicker 只是忽略无效日期和 nil 例如 这不会更新 NSDatePicker 旧值仍然存在 datePick
  • 如何为 Mac OS X 制作可拖动的菜单栏图标

    我正在为我正在开发的应用程序编写菜单栏图标 但是 NSStatusBar 类没有可以通过 cmd 鼠标左键拖动来使图标可拖动的方法 如何使用 Objective C 代码使菜单栏图标可拖动 谢谢 目前您无法使用 NSStatusBar 来完
  • 滚动视图下的iOS swift 4 imageview:双击缩小

    我已经应用了图像视图来通过捏合来放大 缩小 那很容易 当在图像视图上应用双击时 无法检测到选择方法 我使用 Xcode 9 和 swift 4 您能告诉我滚动视图是否应该应用双击手势吗 var previewImage UIImage ni
  • Xcode 找不到我的静态库!

    这是链接器错误 i686 apple darwin10 gcc 4 2 1 Users william Documents SettingsLibrary build Debug iphonesimulator libSettingsLib
  • 在 swift 中从本地视频创建缩略图

    如何从本地视频文件快速创建缩略图 例如 如果视频文件路径位于此处 file Users Dev Library Developer CoreSimulator Devices F33222DF D8F0 448B A127 C5B03C64

随机推荐

  • 在 awk 中按特定顺序打印文件

    我正在关注这个链接https stackoverflow com a 54599800 10220825 https stackoverflow com a 54599800 10220825 file txt Iteration 1 RA
  • 在正确的时机批量创建视频 .srt 字幕

    好家伙 我什至不知道从什么开始 所以 我有一个包含很多视频的文件夹 我需要的是使用这些视频的名称创建字幕 同时注意其长度以创建 srt 格式的字幕 我已经查找了一些信息并复制了一些代码 echo off set dirpath 1 dir
  • 谷歌可视化将 0 轴与两个不同的 y 轴对齐

    我正在创建一个组合图 https developers google com chart interactive docs gallery combochart与谷歌的可视化库 我正在绘制商店一天内的客流量和收入图表 我已将抽奖选项设置为
  • 我可以在 .NET 2.0 或 3.0 中使用扩展方法和 LINQ 吗?

    当我尝试使用 NET 2 0 或 3 0 运行时添加扩展方法时 出现错误 无法定义新的扩展方法 因为编译器需要 类型 System Runtime CompilerServices ExtensionAttribute 不能 成立 您是否缺
  • 用于滚动文本的CSS文本动画[重复]

    这个问题在这里已经有答案了 我想我已经完成了一半 但我需要一些 CSS3 或 jQuery 帮助来完成这个滚动文本 我有一个 div 我需要文本从左向右滚动 然后当点击 div 末尾时再次从右向左滚动 依此类推 我目前从左到右 但它似乎在
  • 如何在 Android 中使用 Gson 和 Retrofit 解析深层嵌套 json 对象中的字段?

    我有一个独特的情况 我必须从 json 的深层嵌套对象中获取某些时间 这有点复杂 我找不到解决方案 所以寻找解决这个问题的想法和方法 我有一个 json 如下 mySpaceId 73220 myBuildingId 14019 myFlo
  • 为什么没有值的变量返回 true 且为空?当在视图中使用时)?

    The empty 方法对于 nil 类是未定义的 所以当你尝试时nil empty 在控制台中它给出 undefined method empty for nil NilClass 我在 application helper rb 中创建
  • CordovaApp.Windows.jsproj(70,3):错误 MSB4019:导入的项目

    完整错误日志 C Users user Development Tutorials cordova tutorial hello platforms windows CordovaApp Windows jsproj 70 3 error
  • 以 ng-repeat 角度随机播放数组

    我正在创建一个测验 每次开始测验时我都想打乱问题的顺序 这样它们就不会每次都以相同的顺序出现 我的 html 代码中有这样的内容 div div question question div img img class quizImg div
  • 在 MATLAB 中绘制圆

    我被要求找到在 MATLAB 中绘制圆的不同方法 看起来很无聊 不过我可以想出一些想法 有些可能效率低下 Method 1 ezpolar x 1 Method 2 t linspace 0 2 pi 100 plot sin t cos
  • iPhone X 的顶栏高度是多少?

    我想知道 iPhone X 顶栏的具体高度 您能否提及iPhone X的状态栏和导航栏高度 请帮我 然而 iPhone X 上的显示屏145pt比 4 7 英寸显示屏高 从而为内容提供大约 20 的额外垂直空间 欲了解更多信息 请获取 Ap
  • 使用 GridsearchCV () 进行保留验证

    GridsearchCV 有一个参数cv 默认值为3 表示是3倍 有没有办法将 Gridsearch 与保留验证方案一起使用 例如80 20 分割 你可以使用sklearn model selection ShuffleSplit or s
  • ESLint 错误:“@storybook/react”应该列在项目的依赖项中,而不是 devDependencies

    使用 ESLint 将 Storybook 安装到 React js 应用程序中后 VSCode linter 无法识别 storybook react示例中的导入 stories js files 它给了我以下错误 storybook r
  • Java 中是否有等效于 C++ 的析构函数? [复制]

    这个问题在这里已经有答案了 最简单的设计如下 class Session Timer t new Timer 每当 Session分配完毕后 我在其中启动一个计时器 计时器将在 10 20 分钟后到期 现在 假设如果Session在计时器到
  • C++ 强制转换为 void 的目的是什么? [复制]

    这个问题在这里已经有答案了 可能的重复 将未使用的返回值强制转换为 void https stackoverflow com questions 689677 casting unused return values to void 我读了
  • 如何恢复默认状态栏颜色?

    在我的一项活动中 我不希望状态栏有任何颜色 我希望它在我的应用程序运行之前保持为任何颜色 我可以将其更改为黑色 但黑色不是默认值 默认值是透明的 我不想尝试找出哪种透明度是正确的 因为它在其他人的手机上可能有所不同 所以我想在此特定活动中基
  • 查找字符串中只出现一次的字符

    我正在用 PHP 编写一个算法来解决给定的数独难题 我已经设置了一个带有两个类的面向对象的实现 Square9x9 棋盘上每个单独图块的类 以及Sudoku类 其矩阵为Squares 代表董事会 我正在使用的算法的实现是一种三层方法 第一步
  • var chat = $.connection.chat; 出现对象未定义错误使用 SignalR 时

    我尝试安装 SignalR 库来创建示例聊天应用程序 我相信我已遵循文档中给出的所有步骤 我不确定失败的原因是什么 创建聊天对象时失败 我正在使用 VS2010 并使用 VS2010 包下载实用程序下载 SignalR 有人对此有疑问吗 谢
  • jq:删除具有空字符串值的键

    我有以下 JSON data NAME Test 1 ID 1 IP 192 168 1 2 80 NAME Test 2 ID 2 IP NAME Test 3 ID 3 IP 192 168 1 3 80 NAME Test 4 ID
  • 使用简洁形式的 NSManagedObjectID URI?

    在我的应用程序中 我使用 Core Data 以及不使用 Core Data 的附加 sqlite 数据库 在这个附加数据库中 我有一些列存储对NSManagedObject实例通过每个实例的NSManagedObjectID 我得到一个实