Apollo-fetch GraphQL Request

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)
    }

}
1
задан vbotio 5 March 2019 в 00:41
поделиться

2 ответа

Решение, которое я нашел, заключалось в использовании простого 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));

Надеюсь, что это поможет любому с той же проблемой.

0
ответ дан vbotio 5 March 2019 в 00:41
поделиться

В строке запроса нет ключевого слова запроса, а также есть дополнительная скобка. Это должно быть следующим

fetch({
  query: `
   query transactions {
     transactions(limit: 3) {
      tid
      terminalNo
      issuerId
     }
    }
`,
})
0
ответ дан johnny peter 5 March 2019 в 00:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: