8-разрядные и 16-разрядные указатели используются в большинстве низкопрофильных микроконтроллеров. Это означает, что каждая стиральная машина, микро, холодильник, более старые телевизоры и даже автомобили.
Вы могли бы сказать, что это не имеет никакого отношения к программированию на реальном мире. Но вот один пример реального мира: Arduino с 1-2-4k ram (в зависимости от чипа) с 2 байтовыми указателями.
Это последнее, дешевое, доступное для всех и достойное кодирование.
Как прокомментировал gavsta707, вы можете искать переменную в контенте HTML с помощью регулярного выражения var dovizHesaplama = '(.+)'
.
Затем декодируйте JSON, используя JSONDecoder
. Обратите внимание, что вам нужно будет указать формат даты YYYY-MM-dd'T'HH:mm:ss.SSSSSSSZZZZZ
.
Некоторый код, который делает это, может выглядеть как
import Foundation
struct ExchangeRates: Codable {
struct Rate: Codable {
let ask: Double
let bid: Double
let time: Date
}
struct OtherRates: Codable {
let EUR: Rate
let GBP: Rate
let XAU: Rate
let AUD: Rate
let CAD: Rate
let CHF: Rate
let CNY: Rate
let DKK: Rate
let ETH: Rate
let NOK: Rate
let NZD: Rate
let RUB: Rate
let SAR: Rate
let SEK: Rate
let TRL: Rate
let XAG: Rate
let XPD: Rate
let XPT: Rate
}
let USD: OtherRates
}
let jsonPattern = try NSRegularExpression(pattern: "var dovizHesaplama = '(.+)'")
let decoder = JSONDecoder()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "YYYY-MM-dd'T'HH:mm:ss.SSSSSSSZZZZZ"
decoder.dateDecodingStrategy = .formatted(dateFormatter)
let data = try Data(contentsOf: URL(string: "https://yatirim.akbank.com/tr-tr/doviz/sayfalar/default.aspx")!)
if let string = String(data: data, encoding: .utf8) as NSString? {
if let match = jsonPattern.firstMatch(in: string as String, range: NSRange(location: 0, length: string.length)) {
let json = string.substring(with: match.range(at: 1))
let rates = try decoder.decode(ExchangeRates.self, from: json.data(using: .utf8)!)
print(rates)
}
}