sendAsynchronousRequest était déconseillé dans iOS 9, Comment modifier le code pour corriger
Ci-dessous mon code j'obtiens la question avec:
func parseFeedForRequest(request: NSURLRequest, callback: (feed: RSSFeed?, error: NSError?) -> Void)
{
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) { (response, data, error) -> Void in
if ((error) != nil)
{
callback(feed: nil, error: error)
}
else
{
self.callbackClosure = callback
let parser : NSXMLParser = NSXMLParser(data: data!)
parser.delegate = self
parser.shouldResolveExternalEntities = false
parser.parse()
}
}
}
C'est maintenant obsolète depuis iOS 9, et me dit d'utiliser dataTaskWithRequest à la place. Quelqu'un peut-il m'aider à changer sendAsync avec dataTask, je ne sais pas comment.
- J'ai pensé NSURLConnection a été dépréciée en iOS8. Vous devriez être en utilisant NSURLSession depuis iOS7.
- Quel est l'enjeu? Vous avez un problème de compréhension la documentation?
- Oui, je ne sais pas comment les convertir pour utiliser dataTaskWtihReqeust, je ne sais pas ce que j'ai besoin de changer.
- Je suis d'accord avec DarkDust, NSURSession est assez simple à comprendre. Jetez un oeil à Ray le tutoriel de raywenderlich.com/51127/nsurlsession-tutorial
- Condescendant moi n'aidera pas comment jamais, je suis nouvelle swift et préfèrent voir les réponses ont ensuite eureka moments quand je vois ce que vous avez fait. Je vais jeter un oeil cependant, c'est Objectvice-C, connaissez des tutoriels en swift?
- Vous avez répondu à Swift questions pendant un an et demi maintenant. Vraiment, vous avez besoin d'apprendre à lire la documentation, tout y est. C'est un soft de compétences dont vous aurez besoin comme un développeur. Votre méthode a déjà tous les types de vous avez besoin de faire l'appel à
dataTaskWithRequest
, tout ce que vous devez faire est de remplacer de remplacer l'appel deNSURLConnection.sendAsynchronousRequest
avec l'appel deNSURLSession.sharedSession.dataTaskWithRequest
. Il ne va pas beaucoup plus facile. - S'il vous plaît recherche DONC, ici, c'est la grande réponse à votre Swift besoin: stackoverflow.com/questions/24040893/...
- Merci pour les réponses, plus @DarkDust j'apprécie d'où vous venez, et je vais corriger moi-même, je suis amateur, j'ai peut-être fait ça pour la moitié d'une année, mais pour une demi heure par semaine, pratiquement un débutant. J'étais tout simplement en se référant à la "Oh, vas-y", il semble inutile de vous pour m'aider dans ma recherche.
- Vous avez raison, mon ton était inutile, désolé. Je pense seulement que cette question est tellement simple que vous devriez (non, doit) être en mesure de les résoudre vous-même et que vous allez apprendre une grande leçon de résoudre vous-même. Dans le 20 minutes de ce débat est en cours, vous devriez avoir été en mesure de trouver la solution 🙂 (et en Plus, la solution se trouve déjà sur la DONC déjà, comme @JosipB. souligne.)
- eh bien je vous remercie pour le temps pris pour m'aider, je prend note pour la prochaine fois que j'ai besoin de comprendre quelque chose.
Vous devez vous connecter pour publier un commentaire.
Utilisation
NSURLSession
plutôt comme ci-dessous,Pour Objective-C
Swift,
Pour interroger de manière asynchrone, de l'Apple docs
Mise en œuvre rapide
resume()
sur votredataTaskWithRequest
ou de ne pas faire n'importe quoi.Swift 3.0
C'est le swift version 2.1:
Swift 2.0:
Vieux (la remplacer par la Nouvelle ci-dessous):
Nouveau:
avec swift 3.1
Swift 4
Illustrer avec un exemple, le code alternatif à la désapprobation de:
Testé et fonctionne dans Swift 2.1 partir.
//Affiche une image sur la ViewControllers ImageView. Connecter une sortie de l'ImageView
Ici est la SWIFT3.0 Version de Nilesh Patel de Réponse avec JSONSerialised de données
Swift 4.2
Cela a fonctionné pour moi:
J'ai dû ajouter "DispatchQueue.principal.async { }" parce que j'avais un temps d'exécution d'avertissement, puisque seul le thread principal est censé modifier des éléments de l'INTERFACE.