Используя этот другой пост SO Я смог определить, как лучше всего определить, был ли объект уже в моем контейнере S3. Тем не менее, мой код, кажется, не в порядке, и я не знаком с ошибками AWS.
Для начала, я знаю, что мой AWS работает, поскольку у меня уже есть код, который обращается к корзине.
static func uploadData(data:Data, progressHandler: @escaping (_ progress:Progress) -> Void, completionHandlerFunction: @escaping () -> Void, DBKey:String) {
let expression = AWSS3TransferUtilityUploadExpression()
expression.progressBlock = { (task, progress) in
DispatchQueue.main.async(execute: {
progressHandler(progress)
})
}
var completionHandler: AWSS3TransferUtilityUploadCompletionHandlerBlock?
completionHandler = { (task, error) -> Void in
DispatchQueue.main.async(execute: {
completionHandlerFunction()
if(error != nil) {
print(error!.localizedDescription)
}
else {
print(task.response!)
}
})
}
let transferUtility = AWSS3TransferUtility.default()
transferUtility.uploadData(data,
bucket: self.bucketName,
key: DBKey,
contentType: "video/mp4",
expression: expression,
completionHandler: completionHandler).continueWith {
(task) -> AnyObject? in
if let error = task.error {
print("Error: \(error.localizedDescription)")
}
if let _ = task.result {
// Do something with uploadTask.
}
return nil;
}
}
Итак, я пытаюсь использовать аналогичную стратегию, чтобы определить, существует ли предмет
static func checkForItem(item:String, foundHandler: @escaping () -> Void, notFoundHandler: @escaping () -> Void) {
let s3 = AWSS3.default()
let request = AWSS3HeadObjectRequest()
request!.bucket = Storage.bucketName
request!.key = item
s3.headObject(request!).continueWith { (task) -> Any? in
if let error = task.error {
notFoundHandler()
}
else {
foundHandler()
}
return 0
}
}
Кажется, однако, что в тот момент, когда я прошёл let s3 = AWSS3.default()
, он переходит в
Есть ли какой-нибудь подход к тому, почему AWSS3.default()
может создать такую ситуацию? Я даже не получаю доступ к своему ведру или любой важной информации. Мои Cocoapods обновлены (только запускал их), но я готов попробовать что угодно, чтобы это заработало. Спасибо за помощь!