2016-04-14 25 views
0

Ben nesneyiKullanım AlamofireObjectMapper ben bu kodu yazmış olması dönmek fonk

dönmek için bir sunucudan JSON yanıtını eşlemek için AlamofireObjectMapper uzantısını kullanan ve bir fonk yaratacağım bir nesne oluşturmak için func

func downloadPokemonDetails1(completed: DownloadComplete)-> (Pokemon?) { 
     let url = NSURL(string: _pokemonUrl)! 
     Alamofire.request(.GET, url).responseObject { (response: Response<Pokemon, NSError>) in 
      guard response.result.isSuccess else { 
       print(response.result.error.debugDescription) 
       return 
      } 

      let pokemon1 = response.result.value 
      return pokemon1 
     } 
    } 

Herer

import Foundation 

let URL_BASE = "http://pokeapi.co" 
let URL_POKEMON = "/api/v1/pokemon/" 

typealias DownloadComplete =() ->() 

bilmiyorum benim Constanst.swift (DownloadComplete kapatılmasını içerir) neden fonk downloadPokemonDetails1 Benim Pokemon Sınıf

lass Pokemon: Mappable { 
    var id: String? 
    var name: String? 

    required init?(_ map: Map){ 

    } 

    func mapping(map: Map) { 
     name <- map["name"] 
     id <- map["id"] 
    } 
} 
+0

Pokemon sınıfınızı gösterir misiniz? – kamwysoc

+0

Merhaba Pokemon sınıfını içeren soruyu düzenledim. func downloadPokemonDetails1 de Pokemon sınıfında yer almaktadır. –

cevap

1

Kişisel kod hatası un-expected Non-void return value in void function

vererek böyle gitmeli: Kodunuzda

func downloadPokemonDetails1(completed: (Pokemon?) ->()) { 
    let url = NSURL(string: _pokemonUrl)! 
    Alamofire.request(.GET, url).responseObject { (response: Response<Pokemon, NSError>) in 
     guard response.result.isSuccess else { 
      print(response.result.error.debugDescription) 
      return 
     } 
     let pokemon1 = response.result.value 
     completed(pokemon1) 
    } 
} 


self.downloadPokemonDetails1({ 
     [weak weakSelf = self] 
     pokemon in 
     if let unwrappedPokemon = pokemon { 
      weakSelf.label.text = unwrappedPokemon.name 
     } else { 
      //show some error 
     } 
}) 

, değil İşlevinizden, blok değer döndürmek için deneyin. Bence daha iyi bir yol blok kullanarak pokemon nesnesini döndürmektir.

Yardım etmek istermisiniz

+0

Merhaba teşekkürler için çok teşekkür ederim. Her neyse, nesneyi URL'den almak için 2 func'ye neden ihtiyacımız var? UI'yi yalnızca nesneyi zaten aldıktan sonra nasıl güncelleriz? –

+0

Elbette, URL'den bir nesne almak için 2 func'e sahip olmanız gerekmez. UI'nizi alamofire yanıt bloğundan ( – kamwysoc

+0

) güncelleyebilirsiniz Bu yüzden UI'yi buradan güncelleyebildiğim doğrudur // nesne ile bir şeyler yapın (örneğin namelbl.text = unwrappedPokemon.name –