2016-10-01 8 views
2

これはこのサイトの最初の質問です。 私は解決できないという問題があります。Swift 3/iOS 10/TodayExtension - UserDefaultsは常にnilを返します

私は今日の拡張機能付きの簡単なメモアプリケーションに取り組んでいます。 Swift 2.2とiOS 9では問題はありませんでした。問題はSwift 2.3とSwift 3のiOS 10で発生します。 問題は次のとおりです。

ユーザーはメモを(UserDefaultsに保存されています) TodayExtensionで彼のノートを見ることができます。

私はこれらのメソッドをUserDefaultsに保存してUserDefaultsから取得します(私はグループを使用していますので、アプリケーションの機能と拡張機能ですべてがうまく設定されています)。コース):

iOSアプリケーションでは問題はありません。 UserDefaultsはこのコードでうまく動作します。私はTodayExtensionを開いたとき しかし(retrieveNotes中())次の行は、常にnilを返します。

let notesFromDefault = UserDefaults(suiteName: kSUITENAME)!.object(forKey: kKEY) 

だから私のTodayExtensionはいつも私はノートを持っていないと言います。 この問題が発生する理由はありますか?

ありがとうございました! :)

答えて

0

私は似たような問題だと思っていました(私の問題は、ios 9.x swift 2.xの下でユーザーによって保存されたデフォルトが新しいxcode8/swift3では取得されていなかったことです;デフォルトは無かったのでデータが失われてしまったと思いました)、これをシミュレータに戻しました。 Xcode8では実際には新しい「デバイス」である新しいシミュレータが導入されました。私は自分のXcode8シミュレータをiOS 9.xバージョンに戻しました。デフォルトは期待どおりでした。

シミュレータを追加するには、iOSシミュレータのリストの一番下までスクロールし、[Add Additional Simulator]をクリックし、プロンプトに従ってiOS 9.xシミュレータに戻ります。

うまくいけば、これが役に立ちます。

+0

ありがとうございます。 私はあなたが言ったことを試して何も動作しません。 私はSwift 3に移行したことが原因であるかどうかをテストするために新しいプロジェクトを作成しようとしましたが、同じことが起こりました。 UserDefaultsに(グループであっても)何かを保存すると、UserDefaultsを保存するために作成された.plistが、メインアプリケーション以外の拡張子内の別のフォルダに作成されることがわかりました。だから、拡張機能のplistは存在しないので、常にnilを返します:( – Darkkrye

+0

興味深い。私はこの質問に従うので、私は他の所見でもループを守ることができます。 –

+0

よろしくお願いします。 – Darkkrye

0

私は部分的に私の問題を解決しました。

Xcodeとすべての設定(キャッシュファイルなど)を完全に削除しました。 スイート名の「Team」部分を削除しました。

Xcodeコンソールで警告が表示されましたが、TodayExtensionでノートを取得できます。 Piouf!

WatchKit Extensionにはまだ問題があります。私は分かりませんが、私は、App GroupがApple Watch Extensionsと共有されていなくても、そのUserDefaultsを読んでいると思います。

Appleはドキュメントの書き込み "iOSはiOSアプリケーションの設定の読み取り専用コピーを自動的にApple Watchに転送します。WatchKit拡張機能はNSUserDefaultsオブジェクトを使用してこれらの設定を読み込むことはできますが、デフォルトデータベース。

Apple Watchからノートを取得できない理由がわかりません。

少なくとも私は最初の問題を解決しました。誰かが同じ場合。

関連する問題