Ich möchte in Objective C dynamisch umwandeln und Instanzeigenschaften zugreifen. Hier ist ein Pseudo-Code:Dynamischer Typ von ID zu Klasse in Objectiv c
id obj;
if (condition1)
obj = (Class1*)[_fetchedResults objectAtIndex:indexPath.row];
else
obj = (Class2*)[_fetchedResults objectAtIndex:indexPath.row];
NSNumber *latitude = obj.latitude;
Dann wird der Compiler sagt mir folgendes: Eigenschaft ‚Breite‘ nicht auf Objekt gefunden Typ ‚__strong id‘
Entweder Class1 und Class2 sind zentrale Datenelemente und haben fast die gleiche Art von Attributen. In condition1 _fetchedResults gibt Objekte vom Typ Class1 und in condition2 zurück _fetchedResults gibt Objekte vom Typ Class2 zurück.
Könnte mir jemand einen Hinweis geben, wie man diese Art von Problem löst?
Danke!
Ich denke, Sie sollten zuerst sicherstellen, dass was [_fetchedResults objectAtIndex: indexPath.row] zurückgibt, ist die Klasse hat die Breite-Eigenschaft. Außerdem ist das Umwandeln eines Typs NSNagedObject in einen NSManagedObject-Typ falsch. Sie benötigen immer einen NSManagedObjectContext, wenn Sie eine NSManagedObject-Instanz erstellen. –