2016-12-23 3 views
2

私はToday拡張機能を実装したアプリケーションを持っています。 iOS10までうまくいきましたが、共有NSuserDefaultsに格納されているキーを読み取ることができません。iOS 10今日の拡張機能で共有ユーザのデフォルトを読み取れません

私のホストアプリコード:

NSUserDefaults *sharedPrefs = [[NSUserDefaults alloc] initWithSuiteName:kSharedGroupIdentifier]; 
[sharedPrefs setObject:username forKey:@"username"]; 
[sharedPrefs setObject:@"Test" forKey:@"test"]; 
[sharedPrefs synchronize]; 

マイ延長コード:

NSUserDefaults *sharedPrefs = [[NSUserDefaults alloc] initWithSuiteName:kSharedGroupIdentifier]; 
NSString *str = [sharedPrefs valueForKey:@"test"]; 

とstrのVaRは常に拡張ではnilです。私は、ホストアプリケーションと拡張アプリケーションの両方で機能のアプリケーショングループを設定しており、Apple開発者ポータルの設定と照合しています。それはすべてOKです。誰も助けてください、私は何をしなければならない別のものがありますか?私が気づいた

EDIT もう一つは、私が上の赤い感嘆符を持っていることです:「あなたのエンタイトルメントファイルにグループの資格を追加」、と私は問題を解決するとき、感嘆符が消えるが、私がプロジェクトを閉じて再び開くと、もう一度そこにいます。私は暫定プロファイルを再作成しましたが、それでも同じ問題です

答えて

4

Entitlementsファイルに関連する行が見つからないという問題があるようです。問題がどこにあるか、診断、ビルド設定で開始する

  • Code Signing Entitlements下にファイルがあるはずは
  • 開き、そのファイルをリストし、それが一致する値を持つApp Groupsキーを持っていることを確認します:あなたのkSharedGroupIdentifier
  • 読み取り専用ファイルがマークされていないことを確認します(これは潜在的に正常に動作しないように、「修正」を引き起こす)
  • は、次の試合のことすべてを確認してください次のように両方のアプリを
  • kSharedGroupIdentifierとApp Groups

次のためのあなたの資格・ファイル内の値の10

  • kSharedGroupIdentifierは、我々は特定のキーまたは全体好みのドメインまで問題を絞り込むことができます:

    NSUserDefaults *sharedPrefs = [[NSUserDefaults alloc] initWithSuiteName:kSharedGroupIdentifier]; 
    if (sharedPrefs == nil) { 
        NSLog(@"Error loading shared user defaults!"); 
    } 
    

    nilの値は、スイート名が無効であることを示します。

+0

ありがとうございます、それが最初のポイントでした。 – AntonijoDev

0

再起動すると、が問題を解決しました。

Apple RNotes WWDCシード:複数のiOSシミュレータを実行するとNSUserDefaultsが動作しなくなることがあるiOS 8または9のシミュレータを実行してからiOS 10シミュレータを実行すると、NSUserDefaultsがシミュレータで機能しなくなります。これは、ホストMacをリブートすることで回避できます。

私はそれは、

おかげであなたを助け願っています。

+0

私はそれを試しましたが、うまくいかなかった、btw、私もデバイス上で問題が発生します。私が気付いたもう一つの点は、「エンタイトルメントファイルにAdd Groupsエンタイトルメントを追加する」という赤い感嘆符が付いていることです。問題を修正すると、感嘆符が消えますが、プロジェクトを閉じて再度開くともう一度。私は暫定プロファイルを再作成しましたが、それでも同じ問題は – AntonijoDev

関連する問題