gpt4 book ai didi

dependencies - RLMLinkingObjects 循环依赖

转载 作者:行者123 更新时间:2023-12-05 00:56:02 30 4
gpt4 key购买 nike

我有一个循环依赖问题:当使用新的 RLMLinkingObjects 进行反向关系时,我收到以下错误:

Type argument 'RCon *' does not satisfy the bound ('RLMObject *') of type parameter 'RLMObjectType'

我有两个类 RCon 和 RSan。 RCon对RSan有多个引用,而RSan又被多个RCon引用,所以是多对多的关系。
以下是类的声明示例。

第一课:
//  RSan.h

#import <Realm/Realm.h>
#import <UIKit/UIKit.h>

@class RCon;

@interface RSan : RLMObject
@property (readonly) RLMLinkingObjects<RCon*>* cons;
@end
RLM_ARRAY_TYPE(RSan)

另一个类:
//  RCon.h

#import <Realm/Realm.h>
#import <UIKit/UIKit.h>
#import "RSan.h"

@interface RCon : RLMObject
@property RLMArray<RSan*><RSan>* sans;
@end
RLM_ARRAY_TYPE(RCon)

最佳答案

这是由于 Objective-C 编译器的限制。 RLMArray 的通用约束需要它们的元素应该是 RLMObject 的子类.但是Objective-C 编译器无法从@class 识别它转发声明。

要解决这个问题,我认为唯一的方法是同时声明 @interface在同一个文件中,然后使用类扩展声明它们的属性。像下面这样:

#import <Realm/Realm.h>
#import <UIKit/UIKit.h>

@interface RCon : RLMObject
@end
RLM_ARRAY_TYPE(RCon)

@interface RSan : RLMObject
@end
RLM_ARRAY_TYPE(RSan)

@interface RCon()
@property RLMArray<RSan*><RSan>* sans;
@end

@interface RSan()
@property (readonly) RLMLinkingObjects<RCon*>* cons;
@end

注意:所有 avobe 代码都应该在同一个文件中。

关于dependencies - RLMLinkingObjects 循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36966858/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com