在列表中限制 API 个请求
Limit API request in a list
我有一个应用程序,我可以在其中进行 API 调用,让我可以从网站上获取货币。它代表所有货币,但我只需要将它们限制为 3 个“USD”、“KZT”、“AED”、“RUB”
我的获取代码如下:
import SwiftUI
class FetchData: ObservableObject {
@Published var coversionData: [Currency] = []
@Published var baseCode = "USD"
init() {
fetch()
}
func fetch() {
let url = "https://open.exchangerate-api.com/v6/latest?base=\(baseCode)"
let session = URLSession(configuration: .default)
session.dataTask(with: URL(string: url)!) { data, _, _ in
guard let JSONData = data else {return}
do {
let conversion = try JSONDecoder().decode(Conversion.self, from: JSONData)
DispatchQueue.main.async {
self.coversionData = conversion.rates.compactMap({ (key,value) -> Currency? in
return Currency(currencyName: key, currencyValue: value)
})
}
}
catch {
print(error)
}
}
.resume()
}
func updateData(baseCode: String) {
self.baseCode = baseCode
self.coversionData.removeAll()
fetch()
}
}
有人可以分享我的文档、教程、GitHub link 任何我只需要了解如何仅显示 3 个类别的内容吗?
或者例子,拜托!
//Properties
@Published var filteredCurrency = "KZT"
//.Filter call
.filter({ Currency in
Currency.currencyName == self.filteredCurrency
})
这是一个答案,因为我相信我调用了一个 .filter 并确定 Currency.currency 名称将等于我给它的 属性
现在我的代码看起来像这样
import SwiftUI
class FetchData: ObservableObject {
@Published var coversionData: [Currency] = []
@Published var baseCode = "USD"
@Published var filteredCurrency = "KZT"
init() {
fetch()
}
func fetch() {
let url = "https://open.exchangerate-api.com/v6/latest?base=\(baseCode)"
let session = URLSession(configuration: .default)
session.dataTask(with: URL(string: url)!) { data, _, _ in
guard let JSONData = data else {return}
do {
let conversion = try JSONDecoder().decode(Conversion.self, from: JSONData)
DispatchQueue.main.async {
self.coversionData = conversion.rates.compactMap({ (key,value) -> Currency? in
return Currency(currencyName: key, currencyValue: value)
})
.filter({ Currency in
Currency.currencyName == self.filteredCurrency
})
}
}
catch {
print(error)
}
}
.resume()
}
func updateData(baseCode: String) {
self.baseCode = baseCode
self.coversionData.removeAll()
fetch()
}
}
我有一个应用程序,我可以在其中进行 API 调用,让我可以从网站上获取货币。它代表所有货币,但我只需要将它们限制为 3 个“USD”、“KZT”、“AED”、“RUB”
我的获取代码如下:
import SwiftUI
class FetchData: ObservableObject {
@Published var coversionData: [Currency] = []
@Published var baseCode = "USD"
init() {
fetch()
}
func fetch() {
let url = "https://open.exchangerate-api.com/v6/latest?base=\(baseCode)"
let session = URLSession(configuration: .default)
session.dataTask(with: URL(string: url)!) { data, _, _ in
guard let JSONData = data else {return}
do {
let conversion = try JSONDecoder().decode(Conversion.self, from: JSONData)
DispatchQueue.main.async {
self.coversionData = conversion.rates.compactMap({ (key,value) -> Currency? in
return Currency(currencyName: key, currencyValue: value)
})
}
}
catch {
print(error)
}
}
.resume()
}
func updateData(baseCode: String) {
self.baseCode = baseCode
self.coversionData.removeAll()
fetch()
}
}
有人可以分享我的文档、教程、GitHub link 任何我只需要了解如何仅显示 3 个类别的内容吗?
或者例子,拜托!
//Properties
@Published var filteredCurrency = "KZT"
//.Filter call
.filter({ Currency in
Currency.currencyName == self.filteredCurrency
})
这是一个答案,因为我相信我调用了一个 .filter 并确定 Currency.currency 名称将等于我给它的 属性
现在我的代码看起来像这样
import SwiftUI
class FetchData: ObservableObject {
@Published var coversionData: [Currency] = []
@Published var baseCode = "USD"
@Published var filteredCurrency = "KZT"
init() {
fetch()
}
func fetch() {
let url = "https://open.exchangerate-api.com/v6/latest?base=\(baseCode)"
let session = URLSession(configuration: .default)
session.dataTask(with: URL(string: url)!) { data, _, _ in
guard let JSONData = data else {return}
do {
let conversion = try JSONDecoder().decode(Conversion.self, from: JSONData)
DispatchQueue.main.async {
self.coversionData = conversion.rates.compactMap({ (key,value) -> Currency? in
return Currency(currencyName: key, currencyValue: value)
})
.filter({ Currency in
Currency.currencyName == self.filteredCurrency
})
}
}
catch {
print(error)
}
}
.resume()
}
func updateData(baseCode: String) {
self.baseCode = baseCode
self.coversionData.removeAll()
fetch()
}
}