2016-04-08 1 views
0

Je développe une application en utilisant RestKit et Realm. Analyser JSON et enregistrer l'objet dans le domaine Base de données ne pose aucun problème.analyser xml avec restKit

Mon problème est maintenant d'analyser xml et de l'enregistrer dans la base de données. Je l'ai essayé avec RKXMLReaderSerialization et XMLReader, mais XMLReader est trop vieux parce qu'il utilise encore ARC.

Sans ces deux cadres I # m obtenir cette erreur:

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

Comment puis-je ajouter rss+xml?

Editer: Je pense que je dois ajouter rss+xml en tant que type MIME pour RestKit, mais comment?

Le code ci-dessous est mon appel pour charger mon NewsFeed où j'obtiens le message d'erreur ci-dessus.

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)) 

Y a-t-il des possibilités de parser XML avec restKit?

Merci beaucoup!

+0

Qu'en est-il de la valeur par défaut 'NSXMLParser'? – Wain

+0

J'obtiendrai l'erreur avant l'analyse. J'ai encore édité la question – kimbl

Répondre

0

que vous devez faire: (fourni dans obj-c et rapide, bien que je ne l'ai pas vérifié la syntaxe exacte et tapé sur un iPad ...)

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

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

Et:

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

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

J'ai déjà essayé cette solution, mais si j'importe "import RKXMLReaderSerialization" j'obtiendrai l'erreur suivante de xcode: 'ne pourrait pas construire le module Objective-C RKXMLReaderSerialization' et je pense que c'est parce que RKXMLReaderSerialization lie à XML-Reader. Mais XML-Reader a été mis à jour il y a 5 ans et utilise encore ARC ... – kimbl

+0

Vous devrez donc trouver/créer un autre sérialiseur XML que vous pouvez utiliser avec 'RKMIMETypeSerialization'. RestKit + XML + swift ne vont pas avoir été utilisés ensemble à ce jour je suppose ... – Wain

+0

en fait j'obtiens JSON pour la réponse :) Le problème est maintenant le responseDescriptor pour l'API avec Requestparameter. Pouvez-vous vérifier ma nouvelle question? http://stackoverflow.com/questions/36721011/restkit-get-request-with-queryparameter-no-matching-responsedescriptor – kimbl