2016-09-26 5 views
0

Ich habe zwei Objekte, zum BeispielRealm Objekte Arrays voneinander auf IOS enthalten

Human 
Man 

Sie enthalten Eigenschaft RLMArray die anderen Typen enthält. Aber ich kann das nicht zum Kompilieren bringen, da Header Konflikte verursachen und Fehler verschleiern. Ich verstehe, dass sie gleichzeitig voneinander wissen müssen, aber sie können nicht.

Meine menschliche Klasse:

#import "Man.h" 

@interface Human : RLMObject 
@property RLMArray <Man *><Man> *children; 
@end 

RLM_ARRAY_TYPE(Human) 

Man Klasse:

#import "Human.h" 

@interface Man : RLMObject 
@property RLMArray <Human *><Human> *children; 
@end 

RLM_ARRAY_TYPE(Man) 

Wie kann ich dieses Problem lösen? Ich bekomme unbekannte Art: Mensch oder Mensch. Wenn ich beispielsweise die Forward-Deklaration @class Man verwende und den Header in .m verlinke, dann heißt es "Protokolldeklaration für Man nicht finden"

Antwort

0

Ich habe gerade ein paar Tests durchgeführt. Eine Forward-Klasse-Deklaration der Klasse Man sollte funktionieren, solange Sie das Protokoll RLM_ARRAY_TYPE ebenfalls deklarieren und die Generikendeklaration entfernen.

Menschen Klasse:

@class Man; 
RLM_ARRAY_TYPE(Man) 

@interface Human : RLMObject 
@property RLMArray<Man> *children; 
@end 

Man Klasse:

@class Human; 
RLM_ARRAY_TYPE(Human) 

@interface Man : RLMObject 
@property RLMArray<Human> *children; 
@end 

nicht eine große Lösung, aber hoffentlich das wird für Ihre Bedürfnisse zu arbeiten.

Das alles gesagt, je nach Ihren Bedürfnissen, eine viel bessere Lösung ist Realms RLMLinkingObjects feature verwenden, um automatisch die inverse Beziehung zwischen diesen beiden Objekten einzurichten.

Verwandte Themen