@NSManaged 是做什么的?

2024-02-08

我在不同的场合都遇到过这个关键词。我有点知道它应该做什么。但我真的想更好地理解它。

我注意到了什么@NSManaged- 不是基于文档,而是通过重复使用:

  1. 它神奇地取代了键值编码。
  2. 大致相当于@dynamic在 Objective-C 中(我不太了解)
  3. 我需要它来子类化PFObject来自Parse SDK。它通常使用 KVC 从后端读取值或向后端写入值。
  4. 给任何变量添加前缀@NSManaged当我不在初始化程序中初始化时,将关闭编译器。

正式定义(在 Core Data Apple Docs 中):

Core Data 提供 NSManagedObject 类的子类中属性的底层存储和实现。在托管对象子类中与核心数据模型中的属性或关系相对应的每个属性定义之前添加 @NSManaged 属性。与 Objective-C 中的 @dynamic 属性一样,@NSManaged 属性通知 Swift 编译器将在运行时提供属性的存储和实现。但是,与 @dynamic 不同的是,@NSManaged 属性仅适用于 Core Data 支持。

我从中得到了什么:

变量与@NSManaged应免除编译时检查某物.

我已阅读正式文档和有关此事的各种其他问题:

@synthesize 与 @dynamic,有什么区别? https://stackoverflow.com/questions/1160498/synthesize-vs-dynamic-what-are-the-differences

@dynamic 使用的常见情况是什么? https://stackoverflow.com/questions/4524954/what-is-common-case-for-dynamic-usage/4524983#4524983

我本能地认出some我应该使用它的场景。我部分地知道它的作用。但我寻求的是对其作用的更纯粹的理解。

进一步观察:

A PFObject in the Parse SDK依靠Key Value Coding来访问它的值。这PFObject提供以下访问器:

objectForKey:

let score = results.objectForKey("descriptionOfResult") 
//returns the descriptionOfResult value from the results object

setObject:forKey:

results.setObject("The results for a physics exam", forKey: "descriptionOfResult") 
//sets the value of descriptionOfResult 

据我了解,@NSManaged 神奇地理解我声明的变量自动使用上面的访问器get and set。我想知道它是如何做到这一点的(如果我理解的是真的),以及它还做了什么。


是的,它确实有点像@dynamic——从技术上讲,它甚至可能是相同的。语义上有一点细微的差别:

@dynamic 说“编译器,不要检查我的属性是否也已实现”。您可能看不到任何代码,但我保证它会在运行时工作”

@NSManaged 现在说“编译器,不要检查这些属性,因为我有核心数据来处理实现 - 它将在运行时存在”

所以你甚至可以说:@NSManaged 是语法糖,是动态的更窄版本:)


https://github.com/KyoheiG3/DynamicBlurView/issues/2 https://github.com/KyoheiG3/DynamicBlurView/issues/2
这里有人甚至在没有 CD 的情况下使用 @NSManaged 因为他想要 @dynamic 行为

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

@NSManaged 是做什么的? 的相关文章

随机推荐

  • 如何实现检测一个视图被拖动到另一个视图上?

    我想要一个可拖动视图 同时能够不断监视到 目标 视图的距离 并检测何时将可拖动视图拖动到目标视图上 我的想法是得到Rect s两种视图并使用intersect 检查它们是否接触 然而 我的实现工作并不顺利 有时它会检测到错误位置的重叠或未检
  • 将目录添加到 PyCharm 中的 Python 路径?

    我希望能够使用paraview simplePyCharm 中的库 我的电脑中已经安装了 paraview 该软件包无法安装pip据我所知 没有 whl 文件 网站docs https www paraview org ParaView D
  • PHP:使用 php 裁剪时出现黑色图像

    我设置了一个上传 jpeg 的脚本 然后将其裁剪为缩略图 但有些用户遇到黑色图像 老实说我不知道 他们上传的是什么 也许是压缩格式与 php 库不兼容的 jpeg 这是我的简单代码 当我尝试使用我的照片时一切正常 所以我无法理解为什么有些用
  • 如何在不同主机上向 eureka-server 注册 eureka-clients。弹簧启动

    我正在本地主机上运行我的尤里卡服务器 我能够在本地主机上注册所有其他正在运行的服务 并且一切都按预期进行 现在我想注册一个在Linux机器上运行的服务 我的属性看起来像这样 spring application name myService
  • Babel 6 更改了默认导出方式

    之前 babel 会添加以下行module exports exports default 它不再这样做了 这意味着在我能做之前 var foo require foo use foo 现在我必须这样做 var foo require fo
  • 在 Gremlin 中合并地图

    我正在尝试编写一个满足响应对象中两个要求的查询 必须包括all顶点的属性 无需在查询中指定各个字段 必须将结果展平到对象的同一水平上 作为单独的查询 我可以这样做 1 valueMap query g V 1 valueMap by unf
  • AVX __m256i 有符号 32 位元素的整数除法

    我试图在 AVX 机器上进行 SIMD 划分并收到编译错误 这是我的代码 m256i help int arr 8 int arr2 8 help mm256 load si256 m256i arr m256i temp temp mm2
  • 在javascript中将JSONArray转换为String以发送到java

    我正在使用一个使用phonegap 的Android 应用程序 java 调用一些显示网页的 HTML 而 HTML 使用 javascript 来实现功能 现在 在 javascript 中 我使用 HTML 中的参数进行 JSON 调用
  • servlet 应该执行多少个操作?

    我是 Web 开发新手 只是想知道 java servlet 的最佳实践 每个 servlet 是否应该只执行一个操作 即用于登录的 servlet 用于注册的 servlet 等 还是应该通过传递不同的参数来告诉 servlet 执行哪个
  • 通过 WinAPI 提取光标大小 (Windows 10)

    我需要提取光标图像以便在我的 swing 应用程序 Java 中使用它 首先 我发现类似的问题 https stackoverflow com questions 739870 extract cursor image in java 74
  • 如何使用 VBA 将 ShapeStyle 应用于 Excel 中图表的特定系列?

    如何使用 vba 以编程方式将 ShapeStyle 应用于单个图表系列中的一组点 看来我需要一个 形状 对象 其中仅包含我尝试格式化的系列中的点 一些信息在这里 http peltiertech com WordPress program
  • 检索网格的内容

    我在用jqGrid http www trirand com jqgridwiki doku php id start在客户端显示值 最初网格是空的 用户内联输入数据 根据要求 我需要在用户提交表单后提交数据 我打算在提交表单之前格式化内容
  • 串行端口重定向或拆分[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一本关于如何进行串行端口重定向或端口分割的书和 或代码示例 我编写了很多 com 端口应用程
  • 如何阻止Android硬件后退按钮在react-native的react-navigation中起作用?

    我正在开发一个问答游戏 我使用react navigation来处理导航 我有3个组件 newGame 问题 结果 如果没有 我不希望用户从结果页面返回到问题 问题已经用尽 但是 按后退按钮 Android 硬件 将使他回到问题 然后我尝试
  • Python、Flask客户端ip地址

    我需要记录我使用 Python 和 Flask 创建的 web 应用程序的每个用户的 IP 地址 我在用着 request remote addr 但这会返回应用程序部署到的服务器的 IP 地址 有解决办法吗 如何部署 Flask 应用程序
  • C++ 中静态全局标识符和非静态全局标识符有什么区别?

    有什么区别static全球和非staticC 中的全局标识符 静态将变量的范围限制为相同翻译单位 https stackoverflow com questions 1106149 what is a translation unit in
  • React/redux,显示多个组件,共享相同的操作,但具有不同的状态

    假设我有一个可重复使用的容器 它是一个具有多个页面的向导 向导状态由 redux actions 驱动 当一个动作被触发时 我使用一个减速器来更新我的状态 如果我想要复制多个向导并拥有自己的状态怎么办 我认为必须有一种方法可以让某个动态减速
  • 在nodejs(express)中的router.route()中设置中间件

    我想要它做什么 router post xxxx authorize xxxx function authorize req res next if xxx res send 500 else next 我想检查每条路线的会话 但既然路由器
  • 如何在没有 if 语句的情况下做出决定

    我正在学习 Java 课程 但我们还没有正式学习 if 语句 我在学习的时候看到这个问题 编写一个名为 pay 的方法 它接受两个参数 一个代表助教工资的实数 一个代表助教本周工作时数的整数 该方法应该返回付给TA多少钱 例如 调用 pay
  • @NSManaged 是做什么的?

    我在不同的场合都遇到过这个关键词 我有点知道它应该做什么 但我真的想更好地理解它 我注意到了什么 NSManaged 不是基于文档 而是通过重复使用 它神奇地取代了键值编码 大致相当于 dynamic在 Objective C 中 我不太了