【问题标题】:Alamofire in Swift 3 with iOS 8带有 iOS 8 的 Swift 3 中的 Alamofire
【发布时间】:2016-09-15 11:01:23
【问题描述】:

我已经更新到最新版本的 Xcode (8),在将代码升级到 Swift 3 后,Alamofire 突然停止工作并抛出很多错误。

经过大量研究,我发现Alamofire for Swift 3 兼容iOS9+,所以现在我必须找到另一个兼容iOS8+ 的。

你知道如何为 iOS8 制作与 Alamofire 相同的功能吗?

【问题讨论】:

    标签: swift ios8 ios9 alamofire swift3


    【解决方案1】:

    试试这个分叉,https://github.com/tonyli508/AlamofireDomain

    或直接 pod:

    pod 'AlamofireDomain', '~> 4.0'

    【讨论】:

      【解决方案2】:

      我没有为 iOS 8 找到 Alamofire 的“真正”替代品,因此我尝试使用 Apple Swift 本身的 URLRequest。

      所以这是我在尝试和尝试后最终得到的示例(即使没有 SwiftyJSON):

      func searchPosts() -> [Post] {
          var request = URLRequest(url: URL(string: "https://www.mywebsite.com/searchPosts.php")!)
          request.httpMethod = "POST"
          let postString = ""
          request.httpBody = postString.data(using: .utf8)
          request.addValue("application/json", forHTTPHeaderField: "Content-Type")
          request.addValue("application/json", forHTTPHeaderField: "Accept")
      
          let task = URLSession.shared.dataTask(with: request) { data, response, error in
      
              if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {
                  print(httpStatus.statusCode)
                  self.showError()
              } else {
                  do {
                      self.listPosts = [Post]()
                      // Convert NSData to Dictionary where keys are of type String, and values are of any type
                      let json = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as! [String:AnyObject]
      
                      for field in json["posts"] as? [AnyObject] ?? [] {
      
                          // Create "Post" object
                          let post = Post(
                              id: (field["id"])! as! String,
                              title: (field["title"] as! String),
                              alias: (field["alias"] as! String),
                              catid: (field["catid"] as! String),
                              catname: (field["catname"] as! String),
                              date: (field["date"] as! String),
                              image: (field["image"] as! String),
                              introtext: (field["introtext"] as! String),
                              fulltext: (field["fulltext"] as! String)
                          )
                          self.listPosts.append(post)
                      }
      
                      DispatchQueue.main.async {
                          self.tableView.reloadData()
                      }
                  } catch {
                      self.showError()
                  }
              }
          }
      
          task.resume()
      
          return listPosts
      }
      

      我希望它可以帮助其他开发人员。如果有人找到解决此问题的另一种可能的方法,我将不胜感激。

      问候

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-26
      • 1970-01-01
      相关资源
      最近更新 更多