簡體   English   中英

GET請求新的Alamofire Swift 3

[英]GET request on new Alamofire Swift 3

因此,我決定將我的應用程序遷移到Swift 3.0,但是現在我發現自己無法解決新Alamofire遇到的.GET請求所面臨的問題。 這是現在的請求:

func getAlbums(_ ID: String, ANN: String, completed: @escaping DownloadComplete) {
        let searchFT = ID.replacingOccurrences(of: " ", with: "+", options: NSString.CompareOptions.literal, range: nil)
        let urlPath = ""
        let url = URL(string: urlPath)

        Alamofire.request(url!, method: .get).responseJSON { response in
            if let JSON = response.result.value as! [String: AnyObject]! {
                if let dict = JSON["results"] as! NSArray! {
                    AlbumsArtist.removeAll()
                    AlbumsArtist = [String]()
                    ImagesArtist.removeAll()
                    ImagesArtist = [String]()
                    for items in dict {


                        if let AT = items["artistName"] as? String {
                            if AT == ANN {
                                if let TN = items["collectionName"] as? String {
                                    AlbumsArtist.append(TN)
                                } else {
                                    AlbumsArtist.append("")
                                }

                                if let IM = items["artworkUrl100"] as? String {
                                    let newString = IM.stringByReplacingOccurrencesOfString("100", withString: "600", options: NSStringCompareOptions.LiteralSearch, range: nil)
                                    ImagesArtist.append(newString)
                                } else {
                                    ImagesArtist.append("")
                                }
                            }
                        }




                    }

                    completed()

                }

            }

            }
        }

我遇到的問題是如果讓AT = items["artistName"] as? String AT = items["artistName"] as? String錯誤表明: Type 'NSFastEnumerationIterator.Element (aka: 'Any') has no subscript members

非常感謝你!

如評論中所述,您應該將代碼更改為:

if let AT = items["artistName"] as? [[String:Any]]

但是,為了使代碼更安全,您應該使用以下代碼:

if let AT = items["artistName"] as? [[String:Any]] {
    if AT == ANN {
        guard let TN = items["collectionName"] as? String,
              let IM = items["artworkUrl100"] as? String else { // Some error occurred }

        AlbumsArtist.append(TN);
        let newString = IM.stringByReplacingOccurrencesOfString("100", withString: "600", options: NSStringCompareOptions.LiteralSearch, range: nil)
        ImagesArtist.append(newString)
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM