Xcode 4 Core Data:如何使用在数据模型编辑器中创建的获取属性
Posted
技术标签:
【中文标题】Xcode 4 Core Data:如何使用在数据模型编辑器中创建的获取属性【英文标题】:Xcode 4 Core Data: How to use fetched property created in Data Model editor 【发布时间】:2011-06-26 21:21:03 【问题描述】:如何在 Xcode 4 中实现获取的属性?
下面是两个实体的示例,一本书和一个页面:
我按照此处的指南创建了一个提取的属性,该属性使用变量 $FETCH_SOURCE 引用来自源实体的值:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdRelationships.html
现在,一旦我保存了这个并生成了源代码,我就会得到这个:
// Book.h
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
@class Pages;
@interface Book : NSManagedObject
@private
@property (nonatomic, retain) NSString * title;
@property (nonatomic, retain) NSNumber * pageCount;
@property (nonatomic, retain) Pages * pages;
@end
还有……
// Book.m
#import "Book.h"
#import "Pages.h"
@implementation Book
@dynamic title;
@dynamic pageCount;
@dynamic pages;
@end
获取的属性“fetchLastPage”在哪里?如何在代码中使用它?
【问题讨论】:
仅供参考,这不是我正在使用的实际代码。我正在编写一个应用程序,其中有多个数据存储(一个用于只读,一个用于用户保存的数据),我需要使用获取的属性,因为多个存储之间不保持关系:developer.apple.com/library/mac/documentation/Cocoa/Conceptual/… 【参考方案1】:根据我的阅读,您需要使用 @dynamic 关键字自己将获取的属性添加到生成的类中
// In your header
@property (nonatomic, retain) NSArray *fetchLastPage;
// In your class
@dynamic fetchLastPage;
【讨论】:
+1 你的基本想法是正确的,但获取的属性始终属于 NSArray 类。我将编辑您的答案以反映这一点。 我要补充一点,您必须手动执行此操作,因为 X4 Core Data 工具存在严重错误。在以前的版本中,它会自动添加 fetchedProperty 定义。 @TechZen - 你应该向 Apple 提交错误报告。 谢谢大家,我会在今天晚些时候尝试后接受这个答案。有谁知道获取属性的良好参考?我看过 3 部关于 Core Data 的不同书籍(可能是仅有的 3 部关于 Core Data 的书籍)并且严重缺乏提及如何处理获取的属性和利用多个商店。我还没有看到任何关于如何使用 fetched-properties 在分布在多个商店的实体之间保持松散关系的示例。 @pokstad -- 好吧,我知道早期版本之一就是这样做的。获取的属性并不复杂,它们只是获取的对象数组。唯一真正的问题是,只有在对象第一次出现故障时才会运行提取。之后,您需要调用refreshObject:mergeChanges:
以使其刷新。以上是关于Xcode 4 Core Data:如何使用在数据模型编辑器中创建的获取属性的主要内容,如果未能解决你的问题,请参考以下文章
Xcode Entity Core Data - NSDate 错误的年份? [复制]
使用 XCode 8 中 Core Data 生成的类创建对象数组
使用 xcode 和 core-data 中的代码创建托管对象