9

CoreData: Ubiquity: 無効なオプション: NSPersistentStoreUbiquitousContentNameKey の値にピリオドを含めないでください: com.YashwantChauhan.Outis

-PFUbiquitySwitchboardEntryMetadata setUseLocalStorage:: CoreData: ユビキタス: mobile~20BF44C9-C39F-48DC-A8A1-B45FC82C7E20:com.YashwantChauhan.Outis

iCloud との同期に問題があります。上記の 2 つのエラーがスローされます。何が問題なのかわかりません。資格ファイルをセットアップし、Ubiquity Container を に設定しましたcom.YashwantChauhan.Outis

MagicalRecord のメソッドを使用して CoreData スタックを開始します。

[MagicalRecord setupCoreDataStackWithiCloudContainer:@"N6TU2CB323.com.YashwantChauhan.Outis" localStoreNamed:@"Model.sqlite"];

しかし、MagicalRecord は CoreData メソッドを単純化するだけなので、それは問題ではありません。

大変助かりました。

わかりました更新:

-[NSFileManager URLForUbiquityContainerIdentifier:]: ユビキタス コンテナー URL の取得中にエラーが発生しました: エラー Domain=LibrarianErrorDomain Code=11 "操作を完了できませんでした。(LibrarianErrorDomain エラー 11 - 要求されたコンテナー識別子は、クライアントの com.apple によって許可されていません。 .developer.ubiquity-container-identifiers 資格。)" UserInfo=0x15e0d8a0 {NSDescription=要求されたコンテナー識別子は、クライアントの com.apple.developer.ubiquity-container-identifiers 資格によって許可されていません。}

これは私が受け取った最新のエラー メッセージです。これは質問の最初のエラーとは異なることを認識していますが、古いメッセージはある種の奇妙なバグであることが判明しました。Ubiquity Container 識別子からピリオドを削除して、@Rauru Ferro のソリューションを試しました。識別子の要件にはピリオドが含まれているため、これが機能しないことはわかっていましたが、ピリオドを元に戻すと、上記のエラーメッセージが吐き出されました。これは、ピリオドを使用しないよりもはるかに理にかなっています。私たちは皆、そうしていることを知っています

Ubiquity Container 識別子を取得して実際にチェックできる、この便利なコード スニペットも見つけました。問題があるかどうかをすばやく確認するための便利なスニペット。

NSString *containerId = @"com.YashwantChauhan.Outis";
NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *iCloudURL = [fileManager URLForUbiquityContainerIdentifier:containerId];
NSLog(@"%@", [iCloudURL absoluteString]);

別の更新:見た目からして、この愚か者NSPersistentStoreUbiquitousContentNameKey should not contain periodsは完全に混乱しています。NSPersistentStoreUbiquitousContentNameKeyある種のフォルダ ( Tutorial ) のように作成された場合、要件は.名前の前に.com.YashwantChauhan.Outisないことですが、そうではありません。私はここで気が狂い始めています!Entitlements ファイルに問題はなく、MagicalRecord で iCloud コンテナー ID をフェッチしても問題はありません。これは Xcode 5 で iCloud をセットアップする際の内部的な問題だと思い始めていますが、もちろんわかりません。そうは言っても、些細なことや、実際に他の人の頭痛の種になるようなことで頭がおかしくなっているだけかもしれません。

実際の作業バージョンがどのように見えるかを確認できるように、誰でも資格ファイルを投稿できますか? もちろん編集済み。ありがとうございました!

4

4 に答える 4

5

https://forums.pragprog.com/forums/252/topics/12315を参照 してください

応答を引用:

これは最近変更されました (Mavericks)。幸いなことに、iCloud を追加したばかりなので、影響は最小限です。

次のコード行を変更する必要があります。

[options setValue:[[NSBundle mainBundle] bundleIdentifier] forKey:NSPersistentStoreUbiquitousContentNameKey]; 他の何かに。それは別の何かですか?アプリケーションにわかりやすいものをお勧めします。私は最近、構造体のようなクラス名を使用しています。したがって、おそらくアプリの名前または単に「DataStorage」に変更します。

名前はアプリケーションに固有のものであるため、実際の値は理解できる限り重要ではありません。

そこで、以下のコードを変更しました...

        options = [NSDictionary dictionaryWithObjectsAndKeys:
                   [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,     // Key to automatically attempt to migrate versioned stores
               [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption,           // Key to attempt to create the mapping model automatically
               @"TrafficCamNZ_DataStore", NSPersistentStoreUbiquitousContentNameKey,                // Option to specify that a persistent store has a given name in ubiquity.
               cloudURL, NSPersistentStoreUbiquitousContentURLKey,                              // Option to specify the log path to use for ubiquitous content logs.
               nil];

以前に TrafficCamNZ.DataStore があった TrafficCamNZ_DataStore という行を参照してください。

  • デビッド
于 2014-02-03T10:01:59.540 に答える
2

共有コンテナを使用していますが、同じエラー警告が表示されました。次のようなさまざまなクラウド識別子文字列のすべての出現箇所を置き換えることで修正できます。

  • "$(TeamIdentifierPrefix)com.mydomain.myapp"
  • "com.mydomain.myapp"
  • "ABCDEF0123.com.mydomain.myapp"

この 1 つの明示的なクラウド コンテナー文字列のみを使用します。

  • "ABCDEF0123.com.mydomain.myapp"

ある時点で、Xcode がエンタイトルメントを更新して を再挿入したに違いないと思いますが"$(TeamIdentifierPrefix)"、これは共有コンテナーが原因で間違っていました。また、あなたが持っているように、コード内の識別子を忘れていました:

NSString *containerId = @"com.YashwantChauhan.Outis";

それはおそらく次のようになるはずです:

NSString *containerId = @"ABCDEF01234.com.YashwantChauhan.Outis";
于 2015-06-19T15:00:39.643 に答える
1

私は同じ問題を抱えていましたが、何が問題なのか、なぜそこにあるのかわかりません。私が読んでいることから、containerId でドットを使用できるはずです。

ただし、私にとっては、containerId のドットをチルダに置き換えることで機能し始めました。

すなわち:

NSString *containerId = @"N6TU2CB323~com~YashwantChauhan~Outis";

それ以外の:

NSString *containerId = @"N6TU2CB323.com.YashwantChauhan.Outis";
于 2013-10-23T14:06:14.333 に答える
0

2 点なしで comYashwantChauhanOutis を使用してみてください。

于 2013-10-06T19:04:13.060 に答える