2016-10-12 35 views
5

hata türünde bir argüman listesiyle dataTask çağırılamıyor iOS'ta yeni başladım. Web'de arama yaptım ve sorunumu çözecek bir cevap bulamadım. Ne yapılacağı ve nasıl çözüm arayacağına dair bir fikriniz yok.Swift 3:

Swift 2'yi temel alan öğreticiyi takip ediyorum. Aşağıdaki yöntem hata gösteriyor.

func downloadBooks(bookTitle: String) { 
    let stringURL = "GET https://www.googleapis.com/books/v1/volumes?q=\(bookTitle)" 

    guard let URL = URL(string: stringURL) else { 
     print("url problems") 
     return 
    } 

    let urlRequest = NSMutableURLRequest(url: URL) 
    let session = URLSession.shared 

    let task = session.dataTask(with: urlRequest) { (data: Data?, response: URLResponse?, error: Error?) in 

    } 

    task.resume() 
} 

Xcode tarafından önerilen tüm ayarlamaları yaptım, ancak başka ipucu yok.

Üstelik öğretici kod orijinal kısmı böyleydi:

guard let URL = NSURL(string: stringURL) else { 
    print("url problems") 
    return 
} 

Sonra Xcode aşağıdaki gibi as URL eklemek için önerilen: Bu sürümlerin
let urlRequest = NSMutableURLRequest(url: URL as URL) 

İkisi

hiçbir hata gösteriyoruz. Peki fark nedir? Hangisini kullanmalıyım?

Gerçekten herhangi bir yardım için minnettar olurum!

+0

don URL'nin başında "GET" e ihtiyaç duyuyor. –

+0

@AndyIbanez gerçekten mi? Ama öğreticiden alındı. O zaman yazar yanlış mı? – Marat

+0

URL'niz boşsa, o zaman evet. Veri görevlerinin yine de alınabileceği ima ediliyor. –

cevap

11

Swift 3'te derleyici istediği yerli

let urlRequest = URLRequest(url: url) // use a lowercase variable name, URL is a native struct in Swift 3 

Ama özellikle sözdizimi ile bile isteği

let task = session.dataTask(with: url) { (data: Data?, response: URLResponse?, error: Error?) in ... 

ne de ek açıklamaları gerekmez URLRequest

let task = session.dataTask(with: url) { (data, response, error) in ... 
+0

Her iki çözümünüzü de denedim ve hepsi çalışıyor. O zaman fark nedir? Hangisini terk etmeliyim? – Marat

+1

İstek, GET görevleri için aslında gerekli değildir. Üstbilgileri ve POST verilerini geçiren POST görevlerine ihtiyacınız var. Yani isteği ihmal et. – vadian

+0

Şimdi anladım. Teşekkürler! – Marat