• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

objective-c - 使用 transient 属性时对原语的需求是什么?

[复制链接]
菜鸟教程小白 发表于 2022-12-13 16:11:20 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

这是什么?

我不确定我是否完全理解它的作用。

- (NSString *)sectionIdentifier {

    [self willAccessValueForKey"sectionIdentifier"];
    NSString *tmp = [self primitiveSectionIdentifier];
    [self didAccessValueForKey"sectionIdentifier"];

    if (!tmp) {

        tmp = @"bananas";

        [self setPrimitiveSectionIdentifier:tmp];
    }
    return tmp;
}

我为什么需要这个primitiveSectionIdentifier

最终,我使用 Apple 文档中的示例项目来创建节标识符,以与我的 NSFetchedResultsController 一起使用。

虽然这确实有效。我对自己说,

sectionIdentifier”将被访问, 然后我将“tmp”设置为primitiveSectionIdentifier。但是primitiveSectionIdentifier此时什么都没有!是吗?

然后我说我确实访问了“sectionIdentifier”。但我看不出“Will”和“Did”之间是怎么发生的!

谁能帮我理解这个?



Best Answer-推荐答案


[self primitiveSectionIdentifier] 是所谓的“原始访问器”(参见核心数据编程指南的词汇表)。这是实际从持久存储中获取“sectionIdentifier”值的函数。该函数由 Core Data 运行时自动创建。

willAccessValueForKeydidAccessValueForKey 是“通知方法”。根据文档,它们用于键值观察,维护反向关系等。

所以模式是:

  1. 告诉大家你要读取一个值。
  2. 读取值。
  3. 告诉大家您已经阅读了该值。

关于objective-c - 使用 transient 属性时对原语的需求是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12286883/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap