我的一个视图控制器从网页解码并打印html。我在stackoverflow上做过搜索,在github的示例项目中也做过搜索,似乎人们正在使用Alamofire和Swiftsoup来完成这项工作。
我是一个初学者,但我试图理解为什么我会需要阿拉莫菲尔时,我只能使用URLSessions?使用阿拉莫菲尔更好吗?
我认为我的用例很简单。如果我用阿拉莫菲尔,

let getURL = "https://www.someurl.com/extension"

    Alamofire.request(getURL, method: .post, parameters: nil, encoding: URLEncoding.default).validate(contentType: ["application/x-www-form-urlencoded"]).response { (response) in

        if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) {
            do {
                parseHTML()
            }
        }
     }

如果我使用URLSessions,我想应该是这样:
let httpURL = URL(string: "https://www.someurl.com/extension")!
    let httpTask = URLSession.shared.dataTask(with: httpURL) {
     (data, response, error) in
     guard let validData = data, error == nil else {
     DispatchQueue.main.async(execute: {
     print("Error getting paragraph\n") })
     return
     }

    var results = String(data: data!, encoding: String.Encoding.utf8) ?? "Unable to read Paragraph HTML\n"
     DispatchQueue.main.async(execute: {
        print("Correctly read from Paragraph HTML\n")
        parseHTML()
     })
     }
     DispatchQueue.global(qos: DispatchQoS.QoSClass.background).async(execute: {
     httpTask.resume()
     })

旁白:Swiftsoup是解码HTML的首选吗?有没有内置的东西可以代替?

最佳答案

Alamofire/AFNetworking(AFNetworking是objective-c版本)作为苹果的NSURLConnection类的替代品获得了广泛的关注,后者的级别要低得多,并且涉及大量样板代码。使用NSURLConnection(当时的AFNetworking)建立下载任务或任何东西都不那么容易,它使您更容易执行问题中的任务,而不必编写太多代码。
在iOS7前后,苹果发布了NSURLSession来替代NSURLConnection,这使得它与AlamoFire的工作方式非常相似。在这一点上,我个人认为使用NSURLSession/URLSession已经足够好和简单了。也许阿拉莫菲尔更容易使用,但总的来说它们是相似的。这些天来,我唯一一次走向阿拉莫菲,是在我面临某种限制的时候。
所以tl;dr,pre iOS7,AFNetworking是处理下载任务的更简单和直接的方法。Post iOS7 URLSessions变得更易于使用和设置。

关于ios - URLSessions或AlamoFire用于下载每天更新一次的网页?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51885626/

10-10 21:14