【问题标题】:Compile Error Encountered when creating Many-to-Many Relationship with CoreData Accessors使用 CoreData 访问器创建多对多关系时遇到编译错误
【发布时间】:2014-03-23 23:02:58
【问题描述】:

我在 CoreData 中有一个多对多的关系。

Teams 具有团队信息,并链接到具有会议信息的 Schedule。一个团队可以有许多会议,一个会议有多个团队参加。

CoreData 生成的 NSManagedObject 子类如下:

//
//  ScheduleDetails.h

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>

@class SchoolRecords;

@interface ScheduleDetails : NSManagedObject

@property (nonatomic, retain) NSString * meetCity;
@property (nonatomic, retain) NSSet *whatTeams;
@end

@interface ScheduleDetails (CoreDataGeneratedAccessors)

- (void)addWhatTeamsObject:(SchoolRecords *)value;
- (void)removeWhatTeamsObject:(SchoolRecords *)value;
- (void)addWhatTeams:(NSSet *)values;
- (void)removeWhatTeams:(NSSet *)values;

@end

我在 SchoolRecords 的类别类中创建了一个 SchoolRecords* 实例并尝试调用:

[ScheduleDetail addWhatTeamsObject:thisSchool]. 

但是得到编译错误:

No known class method for selector 'addWhatTeamsObject:'

我正在导入 ScheduleDetails.h

Apple 的说明说我应该添加一个@dynamic addWhatTeamsObject(我想),但我不知道在哪里实现它。

当我尝试实现 @dynamic 属性时,我得到了两个编译错误。

我还尝试在 TableViewController 中实现 addWhatTeamsObject,其中方法返回 SchoolRecords* 的实例。我犯了同样的错误。

如果有帮助,我可以添加更多细节。我已经环顾四周寻找如何建立这些关系的示例,但我却一无所获。

感谢您的帮助。

【问题讨论】:

    标签: ios core-data accessor


    【解决方案1】:
    [ScheduleDetail addWhatTeamsObject:thisSchool];
    

    应该是

    [thisSchedule addWhatTeamsObject:thisSchool];
    

    在哪里

    ScheduleDetails *thisSchedule;
    

    是您想要添加团队的实例

    (所有必要的 @dynamic 声明应该已经在 Xcode 生成的托管对象子类文件中。您可能没有理由必须添加自己的。)

    【讨论】:

    • 几个小时以来,我一直用头撞桌子。这很简单,但现在很有意义,因为我猜你必须设置关系的双方。谢谢!没有预编译或编译错误!对于其他可能有问题的人:我只是从 TableViewController 的 fetch 方法中传入了适当的 ScheduleDetails 实例。
    • @PhillipOReilly:您只需要设置关系的一侧(哪一侧都没有关系)。然后自动更新反向关系。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    相关资源
    最近更新 更多