Nach dem, was ich gesehen habe, wenn Sie eine OSX-Desktop-HTML5-Anwendung erstellen und localStorage in Ihrem WebView-Wrapper beibehalten möchten, müssen Sie Folgendes tun:
%Vor%Entnommen aus: Wie aktiviere ich? Lokaler Speicher in meiner WebKit-basierten Anwendung?
Aber das scheint bei Xcode 4.3 nicht zu funktionieren. Stattdessen bekomme ich
%Vor%Ich bin sehr neu in Objective C und mache wahrscheinlich etwas albernes wie nicht ein paar Header oder so etwas.
Ich habe das WebKit-Framework und beide Header hinzugefügt:
%Vor% Und was komisch ist, ist, dass ich auf andere Methoden von Prefs zugreifen kann, d. h. [prefs setDefaultFontSize:10]
- aber nur nicht die zwei obigen, die ich aufgelistet habe.
Irgendwelche Ideen? Ist das etwas, das in Xcode 4.3 entfernt wurde?
OK, ich habe eine Lösung. Ich sah mir den Quellcode von macgap an und bemerkte, wie sie mit diesem Problem umgingen.
Es stellt sich heraus, dass die Fehlermeldung, die ich bekommen habe, ein wenig sinnvoll ist - ich musste zuerst eine Schnittstelle für WebPreferences deklarieren.
%Vor%Wie ich schon sagte, ich bin neu in Objective-C. Ich verstehe nicht wirklich, warum die Schnittstelle benötigt wird, um diese beiden Methoden aufzurufen (d. H. Wenn ich die anderen Methoden ohne die Schnittstelle aufrufen kann).
Es gibt gute Nachrichten und es gibt schlechte Nachrichten; Ich werde die Annahme machen, dass Sie zuerst die schlechten Nachrichten wollen (es wäre einfacher, wenn ich zuerst Ihre Frage mit den schlechten Nachrichten beantworten würde).
Die einzige Antwort darauf, warum dies passiert, ist, dass Xcode 4.3 diese Methoden nicht mehr anbietet. Diese Frage, mit der Sie verlinkt sind: "Wie funktioniert es?" Ich aktiviere den lokalen Speicher in meiner WebKit-basierten Anwendung? "war zuletzt vor über einem Jahr aktiv (die angenommene Antwort wurde Anfang 2011 bearbeitet). Seitdem gab es mindestens zwei Updates für Xcode (wahrscheinlich mehr und ich erinnere mich nur nicht daran), und es scheint mir machbar, dass Apple ihre privaten Methoden geheim halten möchte, also kann man davon ausgehen, dass sie sie entfernt haben sowie die Unterstützung für setLocalStorageEnabled:
.
Die Gründe dafür, dass ich keine andere Antwort auf Ihr Problem finde, sind die folgenden:
WebPreferences
-Instanz aufrufen, werden nicht unterstützt. Es ist nicht nur die private Methode, also muss Apple die Klasse WebPreferences
modifiziert haben, indem nicht nur setLocalStorageEnabled:
entfernt wurde, sondern auch private Methoden wie _setLocalStorageDatabasePath:
. Warum sie anfangs private Methoden unterstützt haben, weiß ich nicht, aber sie haben definitiv auf ihre Unterstützung verzichtet, weil ich seit einiger Zeit keine Gelegenheit gesehen habe, eine private Methode zu implementieren. WebKit
zu importieren, ohne etwas zu tun, um nicht nur den privaten Teil zu finden, sondern ihn auch in Ihren Code einzubinden. Selbst wenn Sie diese Methoden nach all dem "Heavy-Lifting" in Ihrem Code unterstützen können, wäre es sehr unwahrscheinlich, dass Apple damit sehr zufrieden wäre und Ihre App wahrscheinlich aus dem App Store ablehnen würde. Entschuldigen Sie, dass ich ein Debbie-Downer bin, aber ich glaube nicht, dass Ihr Code ohne tiefgreifendes Digging und große Problemumgehungen funktionieren würde. Wenn Sie möchten, dass es problemlos funktioniert, müssen Sie wahrscheinlich bis Anfang 2011 zurückgehen und stattdessen Ihre App erstellen.
Es gibt wahrscheinlich eine Lösung, die nicht mit privaten und nicht unterstützten Methoden verbunden ist, die ich nicht kenne, weil ich nicht genug Erfahrung mit WebKit
habe. Anstatt nach einer Antwort zu suchen, warum Ihr Code nicht funktioniert, suche ich nach Alternativen für das, was Ihr Code tun soll.
Ich habe eine Lösung für das Persistenzproblem gefunden. Siehe meinen Beitrag unter
Tags und Links objective-c macos webkit local-storage xcode4.3