iOS 8-Freigabeerweiterung loadItemForTypeIdentifier: options: completionHandler: Abschlussabschluss wird nicht ausgeführt
Ich verwende die Methode loadItemForTypeIdentifier: options: completionHandler: für ein NSItemProvider-Objekt, um eine URL aus Safari über eine Freigabeerweiterung in iOS 8 zu extrahieren.
In Objective-C funktioniert dieser Code und und der Block wird ausgeführt.
[itemProvider loadItemForTypeIdentifier:(@"public.url" options:nil completionHandler:^(NSURL *url, NSError *error) {
//My code
}];
In Swift sieht es sehr ähnlich aus, allerdings läuft der Verschluss nicht. Ebenfalls,itemProvider.hasItemConformingToTypeIdentifier("public.url")
kehrt zurückYES
Es muss also ein gültiges Objekt geben, um die URL von innen zu analysierenitemProvider
.
itemProvider.loadItemForTypeIdentifier("public.url", options: nil, completionHandler: { (urlItem, error) in
//My code
})
Der Info.plist NSExtension-Teil ist für Objective-C- und Swift-Version identisch und sieht folgendermaßen aus:
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionActivationRule</key>
<dict>
<key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
<integer>1</integer>
</dict>
<key>NSExtensionPointName</key>
<string>com.apple.share-services</string>
<key>NSExtensionPointVersion</key>
<string>1.0</string>
</dict>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.share-services</string>
<key>NSExtensionMainStoryboard</key>
<string>MainInterface</string>
</dict>
Was mache ich falsch?