У меня проблемы с функцией публикации. В результате я получаю «сбой (SwiftyInsta.GenericError.weakObjectReleased)».
Что я делаю не так? Приношу свои извинения, если это простая ошибка. Я просмотрел все вопросы здесь, и это насколько я понял, он компилируется, но возвращает эту ошибку.
func uploadImage() {
let img = imageView.image!
let myCaption = "Sample Caption"
guard let key = UserDefaults.standard.string(forKey: "current.account") else { return print("`key` not found.") }
guard let cache = Authentication.Response.persisted(with: key) else { return print("`Authentication.Response` not found.") }
let handler = APIHandler()
handler.authenticate(with: .cache(cache)) { _ in
let img1: Upload.Picture = Upload.Picture(image: img, caption: myCaption, size: CGSize(width: 30,height: 30) )
handler.media.upload(photo: img1, completionHandler: { (result) in
print(result)
})
}
}
SwiftyInsta.GenericError.weakObjectReleased
обычно вызывается, когда на APIHandler
нет строгих ссылок.
Если ваш пример означает что-то вроде этого:
func someFunction(cache: Authentication.Response) {
let handler = APIHandler()
handler.authenticate(with: .cache(cache)) { _ in
}
}
После вызова обработчика завершения в асинхронном режиме ваш handler
уже был освобожден.
Для того, чтобы это сработало, вам нужно где-то «настоять». Например.
class SomeClass {
let handler = APIHandler()
func someFunction(cache: Authentication.Response) {
handler.authenticate(with: .cache(cache)) { _ in }
}
}
Это означает, что handler
не будет освобожден до тех пор, пока не будет освобожден ваш экземпляр SomeClass
.
Спасибо, теперь он получает сообщение «failure (SwiftyInsta.GenericError.custom (« Invalid response. 400 »))». Это мой viewController, не могли бы вы показать мне мои ошибки в этом, или если у вас есть рабочая функция для публикации изображения, которое вы могли бы просто вырезать и вставить мне, что очень помогло бы мне, я понятия не имею, где это идет не так
import UIKit
import SwiftyInsta
class DeploymentViewController: UIViewController {
let handler = APIHandler()
<strong i="6">@IBOutlet</strong> weak var sampleImage: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
}
<strong i="7">@IBAction</strong> func test(_ sender: Any) {
guard let key = UserDefaults.standard.string(forKey: "current.account") else { return
print("`key` not found.") }
guard let cache = Authentication.Response.persisted(with: key) else { return
print("`Authentication.Response` not found.") }
handler.authenticate(with: .cache(cache)) { _ in }
let img1: Upload.Picture = Upload.Picture(image: self.sampleImage.image!, caption:
"sampleText", size: CGSize(width: 1080,height: 1080) )
self.handler.media.upload(photo: img1, completionHandler: { (result) in
print(result)
}) }
}
Я открыл новую проблему для вашего нового исключения.
Я займусь этим, как только у меня будет немного времени: muscle: @trentona
С этого момента просьба ссылаться на # 106.
Самый полезный комментарий
SwiftyInsta.GenericError.weakObjectReleased
обычно вызывается, когда наAPIHandler
нет строгих ссылок.Если ваш пример означает что-то вроде этого:
После вызова обработчика завершения в асинхронном режиме ваш
handler
уже был освобожден.Для того, чтобы это сработало, вам нужно где-то «настоять». Например.
Это означает, что
handler
не будет освобожден до тех пор, пока не будет освобожден ваш экземплярSomeClass
.