代码之家  ›  专栏  ›  技术社区  ›  Garret Koontz

Alamofire GET请求仅在安装后调用一次-Swift

  •  0
  • Garret Koontz  · 技术社区  · 8 年前

    我正在尝试使用 Alamofire 随着 SwiftyJSON 解析JSON对象并将其添加到数组中。然而,它只在我安装应用程序后第一次起作用。如果我关闭应用程序并再次输入,则不会调用GET请求。我不知道会发生什么,它只能工作一次。

    func getSubreddits() {
    
        guard let requestURL = URL(string: "https://oauth.reddit.com/subreddits/mine/subscriber?limit=100"),
            let token = KeychainWrapper.standard.string(forKey: "oauthToken") else { return }
    
        print("my retrieved token is \(token)")
        let headers = ["User-Agent" : "ios:com.GK.voyager:v1.0 (by /u/ZypherXX)",
                       "Content-Type" : "application/x-www-form-urlencoded",
                       "Authorization" : "bearer \(token)"]
    
        print(headers)
    
        Alamofire.request(requestURL, method: .get, parameters: [:], encoding: JSONEncoding.default, headers: headers).responseJSON { (response) in
    
            switch response.result {
            case .success:
                if let value = response.result.value {
                    let json = JSON(value) //Don't forget to import SwiftyJSON
                    self.parse(json: json)
                }
            case .failure:
                if let error = response.result.error {
                    print(error)
                }
            }
        }
    }
    
    func parse(json: JSON) {
        for result in json["data"]["children"].arrayValue {
            let subreddit = result["data"]["subreddit"].stringValue
            let description = result["data"]["description"].stringValue
            let name = result["data"]["display_name"].stringValue
            let subscribers = result["data"]["subscribers"].intValue
            let subObject = Subreddit(subreddit: subreddit, name: name, description: description, subscribers: subscribers)
            subreddits.append(subObject)
          print(subreddits)
        }
        tableView.reloadData()
    }
    
    0 回复  |  直到 8 年前