Ich hatte eine kurze Frage zu der userInfo-Eigenschaft von NSUserActivity.
%Vor%Ich habe das obige Snippet in einem der View-Controller viewDidLoad () implementiert. Wenn mein Element in der Spotlight-Suche angezeigt wird, ruft es die Delegate-Methode continueUserActivity auf.
Ich versuche, auf die userActivity.userInfo-Eigenschaft zuzugreifen, aber sie gibt null zurück, obwohl sie oben festgelegt wurde.
Hier ist das continueUserActivity-Snippet:
%Vor%}
EDIT: Ich habe das location-Objekt so geändert, dass es als primitiver Typ zurückgegeben wird, aber ich bekomme immer noch null für die Delegate-Methode.
Hat jemand anderes dieses Problem in iOS 9 Beta 3?
Ich arbeite in iOS 9 Beta 5, und eine andere Möglichkeit, dass userInfo
in der application:continueUserActivity:restorationHandler:
Null sein kann, ist, wenn Sie auch NSUserActivity
s webPageURL
Eigenschaft gesetzt haben. Wenn Sie die Eigenschaft webPageURL
setzen und möchten, dass userInfo
nicht null ist, müssen Sie die entsprechenden Schlüssel in die NSUserActivity
-Eigenschaft von requiredUserInfoKeys
einfügen. Das hat mich für immer genommen, um herauszufinden, aber Schande über mich, weil ich das in den Dokumenten verpasst habe.
Hallo, könnten Sie Ihr continueUserActivity-Snippet einchecken:
%Vor%Wenn es nicht dorthin geht, gehe ich davon aus, dass Core Spotlight in Ihrer App integriert ist und Sie Spotlight genau durch diese Elemente von Core Spotlight erhalten.
Ich hoffe, es war hilfreich.
P.S. Im Moment ( Xcode 7 beta 3 ) können viele Entwickler die Such-API nicht über NSUserActivity erreichen, einschließlich mir.
Siehe diese Frage: NSUserActivity-Handoff funktioniert nicht für benutzerdefinierte Daten
>userInfo ist nicht null, wenn Sie dieser Richtlinie von Apple folgen:
Um das userInfo-Dictionary des Aktivitätsobjekts effizient zu aktualisieren, konfigurieren Sie seinen Delegaten und legen Sie die Eigenschaft needsSave auf YES, wenn die userInfo aktualisiert werden muss. Zu geeigneten Zeiten ruft Handoff den Benutzer activityWillSave des Delegates auf: callback, und der Delegat kann den Aktivitätsstatus aktualisieren.
Das Dokument sagt, dass das Setzen von webpageURL erfordert, dass requiredUserInfoKeys auch gesetzt werden. Allerdings funktioniert (a) die Handoff-Funktion ohne requiredUserInfoKeys, solange 'userActivityWillSave' userInfo setzt und (b) webURL ein iOS 8-Parameter ist, während requiredUserInfoKeys iOS 9 ist. Die Delegate-Methode ermöglicht also die Übergabe in iOS 8 zu unterstützen. Xcode 6.
Ich bemerkte (im Simulator), dass Sie entweder:
setzen könnenAber nicht beides! Wenn Sie sowohl webpageURL als auch userInfo mit requiredUserInfoKeys festlegen, wird Ihre Aktivität unter iOS nicht angezeigt. Ich denke, das liegt daran, dass Apple davon ausgeht, wenn Sie die Webseiten-URL so einstellen, dass Sie universelle Links unterstützen und somit keine zusätzlichen Benutzerinformationen benötigen.
Es ist jedoch in Ordnung, sowohl die Webseite als auch nur userInfo festzulegen, aber in Ihrem App-Delegaten erhalten Sie nicht die userInfo.
Ich hatte das gleiche Problem, dass UserInfo Null war (auf iOS 9.2). Das Problem war, dass das Suchergebnis nicht die letzte NSUserActivity war, die ich angetippt habe (älteres ohne UserInfo). Also habe ich den Titel umbenannt, um das korrekte Suchergebnis eindeutig zu identifizieren.
Vielleicht hilft das auch jemandem.
Tags und Links objective-c ios ios9