Elegant Swift 4 Solution
Если вы хотите, чтобы строка
myString = String(htmlString: encodedString)
Добавьте это расширение в свой проект
extension String {
init(htmlString: String) {
self.init()
guard let encodedData = htmlString.data(using: .utf8) else {
self = htmlString
return
}
let attributedOptions: [NSAttributedString.DocumentReadingOptionKey : Any] = [
.documentType: NSAttributedString.DocumentType.html,
.characterEncoding: String.Encoding.utf8.rawValue
]
do {
let attributedString = try NSAttributedString(data: encodedData,
options: attributedOptions,
documentAttributes: nil)
self = attributedString.string
} catch {
print("Error: \(error.localizedDescription)")
self = htmlString
}
}
}
Если вы хотите, чтобы NSAttributedString с жирным шрифтом, курсивом, ссылками и т. д.:
textField.attributedText = try? NSAttributedString(htmlString: encodedString)
Добавьте это расширение в свой проект
extension NSAttributedString {
convenience init(htmlString html: String) throws {
try self.init(data: Data(html.utf8), options: [
.documentType: NSAttributedString.DocumentType.html,
.characterEncoding: String.Encoding.utf8.rawValue
], documentAttributes: nil)
}
}
Решение, которое я нашел, заключалось в использовании простого javascript, пока не уверенного, почему у apollo-fetch возникла ошибка
fetch(`${BASE_API_URL}/graphql`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: `query {
transactions(limit: 3, offset: 0) {
tid
terminalNo
issuerId
}
}`,
})
.then(res => res.json())
.then(res => (
this.setState({ transactions: res.data.transactions })
))
.catch(error => console.log('error', error));
Надеюсь, что это поможет любому с той же проблемой.
В строке запроса нет ключевого слова запроса, а также есть дополнительная скобка. Это должно быть следующим
fetch({
query: `
query transactions {
transactions(limit: 3) {
tid
terminalNo
issuerId
}
}
`,
})