В настоящее время я создаю приложение Swift для iOS с использованием API, и я столкнулся с чем-то напуганным. Я пытаюсь циклически перемещаться по массиву полок и извлекать данные для каждой полки, используя цикл for с методом reviews.list API Goodreads .
Вот как это выглядит:
func getBooksFromShelf(_ oauthswift: OAuth1Swift, userID: String, shelf: Shelf, name: String) {
let _ = oauthswift.client.get(
"https://www.goodreads.com/review/list?v=2",
parameters: ["key": developerKey, "id": userID, "shelf": name, "sort": "date_added"],
success: { response in
let xml = SWXMLHash.parse(response.data)
for review in xml["GoodreadsResponse"]["reviews"]["review"].all {
let book = review["book"]
let bookID = book["id"].element!.text
let bookTitle = book["title"].element!.text
let bookCoverURL = URL(string: book["image_url"].element!.text)
var bookAuthors = "by "
for author in book["authors"].all {
bookAuthors += author["author"]["name"].element!.text
}
let newBook = Book.init(id: bookID, title: bookTitle, authors: bookAuthors, cover: bookCoverURL)
shelf.books.append(newBook)
}
},
Проблема заключается в том, что каждый прогон цикла возвращает данные для https://www.goodreads.com/review/list/USER_ID_HERE.xml?key=DEVELOPER_KEY_HERE&v=2, как будто в запрос вообще не было добавлено никаких параметров. Но когда я заменяю переменную name строкой полки, я знаю, что она существует - как и «текущее чтение» - я получаю правильный результат https://www.goodreads.com/review/list/USER_ID_HERE.xml?key=DEVELOPER_KEY_HERE&v=2&shelf=currently-reading.
Я пытался удалить массив параметров и сам создать строку URL, но это тоже не работает. Я видел эту тему , но это не совсем то же самое, поскольку я не получаю сообщение об ошибке, просто неверный URL. Есть идеи?