我有这样One-to-Many relationship的Core Data:

每个都SBQChrono可以有很多SBQLaps.
在我的模型中,我有班级SBQLap:
@interface CILap : NSObject
@property (strong, nonatomic) NSDate * lapDate;
@end
Run Code Online (Sandbox Code Playgroud)
和班级SBQChrono:
@interface CIChrono : NSObject
@property (strong, nonatomic) NSDate * startDate;
@property (strong, nonatomic) NSDate * stopDate;
@property (strong, nonatomic) NSOrderedSet *laps;
@end
Run Code Online (Sandbox Code Playgroud)
我做了所有的SBQChrono entities事情:
NSFetchRequest *request=[[NSFetchRequest alloc] initWithEntityName:kChronoEntityName];
NSError *error;
NSArray *objects = [appContext.managedObjectContext executeFetchRequest:request error:&error];
Run Code Online (Sandbox Code Playgroud)
如何获得SBQLap每个SBQChrono我发现的指定实体?我读了很多帖子,但无法得到解决方案.
更新:
在尝试施放之后NSManagedObject,我意识到圈数以零值返回.
这样做:
for(NSManagedObject*对象中的oneObject){
CIChrono *chrono=(CIChrono *)oneObject;
NSLog(@"startDate %@", chrono.startDate);
NSLog(@"stopDate %@", chrono.stopDate);
NSLog(@"laps %@",chrono.laps);
Run Code Online (Sandbox Code Playgroud)
我收到消息:
2014-01-28 14:39:48.379 Chrono[2341:70b] startDate 2014-01-28 12:27:53 +0000
2014-01-28 14:39:48.380 Chrono[2341:70b] stopDate 2014-01-28 12:27:54 +0000
2014-01-28 14:39:48.380 Chrono[2341:70b] -[NSManagedObject laps]: unrecognized selector sent to instance 0x8b959b0
2014-01-28 14:39:48.383 Chrono[2341:70b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSManagedObject laps]: unrecognized selector sent to instance 0x8b959b0'
Run Code Online (Sandbox Code Playgroud)
谢谢
这一个有很多有趣的答案.
答案非常简单,不需要子类化NSManagedObject来访问关系中的对象.您只需使用KVC(键值编码)来访问这些对象.关系和属性也是如此.
如果你想使用合成方法,你可以通过子类化来暗示,但这不是必需的.
以下是您在问题中发布的示例的扩展:
for (NSManagedObject *oneObject in objects) {
CIChrono *chrono=(CIChrono *)oneObject;
NSLog(@"startDate %@", [chrono valueForKey:@"startDate");
NSLog(@"stopDate %@", [chrono valueForKey:@"stopDate"]);
NSLog(@"laps %@", [chrono valueForKey:@"laps"]);
NSSet *laps = [chrono valueForKey:@"laps"];
for (NSManagedObject *lap in laps) {
NSLog(@"Lap entity: %@", lap);
}
}
Run Code Online (Sandbox Code Playgroud)
记下-valueForKey:电话.这些是NSManagedObject实例(和所有其他Objective-C对象)响应的键值编码.我建议阅读有关KVC和KVO的文档.
| 归档时间: |
|
| 查看次数: |
3615 次 |
| 最近记录: |