2016-04-08 18 views
0

Ich entwickle eine App mit RestKit und Realm. JSON zu analysieren und das Objekt in der Realm-Datenbank zu speichern ist kein Problem.Parsing Xml mit RestKit

Mein Problem ist jetzt, XML zu analysieren und in der Datenbank zu speichern. Ich versuchte es mit RKXMLReaderSerialization und XMLReader, aber XMLReader ist zu alt, weil es immer noch ARC verwendet.

Ohne diese beiden Frameworks I # m diesen Fehler:

NSLocalizedDescription=Expected content type {(
    "application/x-www-form-urlencoded", 
    "application/json" 
)}, got application/rss+xml} 

Wie kann ich rss+xml hinzufügen?

Edit: Ich denke, ich muss rss+xml als MIME-Typ für RestKit hinzufügen, aber wie?

Der folgende Code ist mein Aufruf zum Laden meines NewsFeed, wo ich die Fehlermeldung von oben bekomme.

static func loadNewsFromServer() { 
     RKObjectManager.sharedManager().getObjectsAtPath(serverURL, 
      parameters: nil, 

      success: { (operation: RKObjectRequestOperation!, result: RKMappingResult!) -> Void in 

       //handle sucess 
      }, 

      failure: { (operation: RKObjectRequestOperation!, error: NSError!) -> Void in 
       print(error) 
      } 
     ) 
    } 

ResponseDescriptor:

let newsResponseDescriptor = RKResponseDescriptor(mapping: News.restKitObjectMapping(), method: RKRequestMethod.GET, pathPattern: serveURL, keyPath: nil, statusCodes: RKStatusCodeIndexSetForClass(RKStatusCodeClass.Successful)) 

Gibt es Möglichkeiten xml mit restKit zu analysieren?

Vielen Dank!

+0

Was ist mit dem Standard 'NSXMLParser'? – Wain

+0

Ich werde den Fehler vor dem Parsen bekommen. Ich habe die Frage noch einmal bearbeitet – kimbl

Antwort

0

Sie tun müssen: (vorausgesetzt, in obj-c und schnell, obwohl ich nicht die genaue Syntax und tippte auf einem iPad ... überprüft haben)

[RKMIMETypeSerialization registerClass:[RKXMLReaderSerialization class] forMIMEType:@"rss+xml"]; 

RKMIMETypeSerialization.registerClass(RKXMLReaderSerialization.self, forMIMEType: "rss+xml") 

Und:

[myObjectManager setAcceptHeaderWithMIMEType:@"rss+xml"]; 

myObjectManager.setAcceptHeaderWithMIMEType("rss+xml") 
+0

Ich habe diese Lösung schon versucht, aber wenn ich 'import RKXMLReaderSerialization' importiere, bekomme ich den folgenden Fehler von xcode: 'konnte Objective-C Modul RKXMLReaderSerialization nicht erstellen und ich denke, das liegt daran, dass RKXMLReaderSerialization Links zu XML-Leser. Aber XML-Reader wurde zuletzt vor 5 Jahren aktualisiert und verwendet immer noch ARC ... – kimbl

+0

Sie müssen also einen anderen XML-Serialiser finden/erstellen, den Sie mit 'RKMIMETypeSerialization' verwenden können. RestKit + XML + swift werden nicht sehr oft zusammen verwendet werden, denke ich ... – Wain

+0

eigentlich bekomme ich JSON für die Antwort :) Problem ist jetzt der ResponseDescriptor für die API mit RequestParameter. Kannst du meine neue Frage überprüfen? http://stackoverflow.com/questions/36721011/restkit-get-request-with-queryparameter-no-matching-responsedescriptor – kimbl