Расширение swift 3 share в первый раз ведет себя странно и в режиме отладки

У меня очень странное поведение с расширением общего ресурса, которое я пытаюсь реализовать. Мое приложение должно отправлять выбранное пользователем изображение на сервер для анализа. Пользователь выбирает одну фотографию и нажимает post кнопку, чтобы отправить его.

Вот странное поведение, которое я имею:

  1. Самый первый раз, когда я использую расширение общего доступа, оно не выходит за рамки attachment.loadItem вызов. Он даже не печатает Before error, Затем, если я повторяю тот же рабочий процесс, он работает нормально.

  2. Если я использую отладчик XCode, я никогда не добьюсь вводаattachment.loadItem часть. Какое бы количество раз я не использовал расширение. Я могу повторить тест несколько раз, мое изображение никогда не отправляется на сервер и ни Before error, There is no error, или же There is an error напечатаны. Более того,attachment.loadItem называется дважды.

У меня есть следующий код в didSelectPost функция

override func didSelectPost() {
        self.extensionContext!.completeRequest(returningItems: [], completionHandler: nil)
        // Make sure we have a valid extension item
        if let content = extensionContext!.inputItems[0] as? NSExtensionItem {

            let contentType = kUTTypeImage as String

            // Verify the provider is valid
            if let contents = content.attachments as? [NSItemProvider] {

                // Look for images
                for attachment in contents {
                    print ("There is \(contents.count) attachments")

                    if attachment.hasItemConformingToTypeIdentifier(contentType) {
                        print ("I'm in the hasItemConforming part")
                        attachment.loadItem(forTypeIdentifier: contentType, options: nil) { data, error in
                            print ("Before error")
                            if error == nil {
                                print ("There is no error")
                                let url = data as! URL
                                self.sendToServer(localUrl: url)
                            } else {
                                print ("There is an error")
                            }
                        }
                    }
                }
            }
        }
    }

Если кто-то может помочь мне с этим, я буду очень благодарен. Большое спасибо за чтение и помощь.

0 ответов

Другие вопросы по тегам