Данные из URL NSString как NSInteger Вместо - PullRequest
0 голосов
/ 24 октября 2018

Я довольно новичок в Свифте.Если бы я хотел получить данные из URL-адреса, этот скрипт работал бы хорошо, но, скажем, я хотел бы добавить и вычесть это число, которое я не могу, потому что это строка, а не число.Как бы я преобразовал это в NSInteger или NSNumber?

   let myURLString = "https://canihazip.com/s"
    if let myURL = NSURL(string: myURLString) {
        do {
            let myHTMLString = try NSString(contentsOf: myURL as URL, encoding: String.Encoding.utf8.rawValue)
            let myIpAddress = myHTMLString
            print("Your IP address is ")
        } catch {
            print(error)
        }
    }

1 Ответ

0 голосов
/ 24 октября 2018

Вы можете получить содержимое простых URL-адресов, например, с помощью метода * * String init (contentsOf :).затем удалите . и приведите к целому числу

if let url = URL(string: "https://canihazip.com/s") {
    do {
        let contents = try String(contentsOf: url)
        let formattedContents = contents.replacingOccurrences(of: ".", with: "")
        print(Int(formattedContents))
    } catch {
        // an error occured
    }
} else {
    // the URL was bad!
}

, если вам нужен каждый пунктирный адрес, используйте .map и .split(separator:), чтобы получить список необязательных целочисленных значений для редактирования.

    let ip = "123.456.31.10"
    let badip = "123.456.fail.10"

    let dottedIpArray = ip.split(separator: ".").map { Int($0) }
    let corruptIpArray = badip.split(separator: ".").map { Int($0) }

    print(dottedIpArray) // [Optional(123), Optional(456), Optional(31), Optional(10)]
    print(corruptIpArray) // [Optional(123), Optional(456), nil, Optional(10)]

Обновлен, с URLSession

    let session = URLSession.shared
    let url = URL(string: "https://canihazip.com/s")!
    let task = session.dataTask(with: url) { (data, response, error) in
        if let error = error {
            // Do something if an error occurs
            print("An Error Occurred: \(error)")
            return
        }
        // ensure we have data, response is OK, and data can be encoded to string
        if let data = data, let response = response as? HTTPURLResponse, response.statusCode == 200 {
            if let stringdata = String(data: data, encoding: .utf8) {
                let dottedIpArray = stringdata.split(separator: ".").map { Int($0) }
                print(dottedIpArray) //[Optional(168), Optional(192), Optional(0), Optional(1)]
            }
        }
    }
    task.resume()

URLSession Документация.

Best Practices

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...