2016-03-29 11 views
3

Ich verwende RestKit 0.26.0 in einem gemischten Swift/Obj C-Projekt. Wir richten Beziehungszuordnungen in einer Swift-Datei ein, und wenn ich das Projekt normal ausführe oder erstelle, funktioniert alles ordnungsgemäß.RestKit RKAttributeMapping fromKeyPath Fehler beim Archiv

Wenn ich jedoch versuche, die App zum Hochladen für die Verteilung zu archivieren, schlägt das Archiv aufgrund von Problemen mit attributeMappingFromKeyPath fehl: toKeyPath: withMapping-Methoden auf RKAttributeMapping und RKRelationshipMapping.

Genauer gesagt, wenn ich zu archivieren, bekomme ich diesen Fehler:

'(fromKeyPath: String!, toKeyPath: String!) -> RKAttributeMapping' is not convertible to '(fromKeyPath: String!, toKeyPath: String!) -> RKAttributeMapping!'

für diesen Block von Code:

let errorMapping = RKObjectMapping(forClass: RKErrorMessage.self) 
     errorMapping.addPropertyMapping(RKAttributeMapping(fromKeyPath: nil, toKeyPath: "userInfo")); 

bekomme ich die gleiche/a sehr ähnlicher Fehler, wenn ich die Verwendung attributeMappingFromKeyPath: toKeyPath-Methode auch an anderen Stellen:

Ausbeuten dieser Fehler:

'(fromKeyPath: String!, toKeyPath: String!, withMapping: RKMapping!) -> RKRelationshipMapping' is not convertible to '(fromKeyPath: String!, toKeyPath: String!, withMapping: RKMapping!) -> RKRelationshipMapping!' 

Wieder Die App baut und läuft im Simulator völlig in Ordnung, ohne jeden Fehler oder Warnungen zu erhöhen. Es ist nur während des Archivs, dass das Problem auftritt. Ich habe alle einfachen "gesunden Menschenverstand" -Lösungen wie Reinigung des Build-Ordners, Löschen abgeleiteter Daten usw. ausprobiert. Ich habe es auf mehreren Computern versucht und alle von ihnen machen das gleiche.

EDIT: Gerade festgestellt, dass der Archiv Build eine andere Build-Konfiguration als meine Entwicklung Build verwendet, wenn ich die Build-Konfiguration zum Ausführen der App auf die gleiche in Archive verwendet, bekomme ich den gleichen Fehler, so dass es einfach etwas ist geändert in der Build-Konfiguration, die das Problem verursacht.

+0

Vermutlich einer von denen, bauen Einstellungen macht den schnellen Compiler strenger zu auspackt finden? – Wain

+0

@Wain scheint eine sichere Wette zu sein, ich habe versucht durchzugehen und jeden Unterschied in der Build-Einstellung zwischen meiner Dev Config und Release Config auf die Release-Version zu ändern, um den Fehler zu erzwingen, aber bisher keine Würfel. –

Antwort

2

Ich habe das Problem behoben, indem ich den Swift Compiler Optimization Level von Fast, Whole Module auf Fast gesetzt habe. Diese Einstellung finden Sie in Ihren Build-Einstellungen.

2

Auch ich lief darin, die schnelle Optimierung erlaubt nicht, dass nil als fromKeyPath übergeben wird, da es String ist! standardmäßig mit unull. RKAttributeMapping.h benötigt die Parameter als Nullable wie in: + (instantype) attributeMappingFromKeyPath: (nullable NSString *) sourceKeyPath toKeyPath: (nullable NSString *) destinationKeyPath;

die Optimierungsstufe ändern versteckte das Problem auch für mich, ich werde Post zurück, wenn ich eine bessere Lösung