1

この問題を解決するために数週間苦労しています..この問題を解決するために私を助けてください.

Apple WWDC 2012 から iCloud でコア データのサンプル コードをダウンロードし、アプリケーションで使用しようとしましたが、何も機能しませんでした。

もちろん、私はいくつかのコードを少し変更しました..しかし、私は何をすべきか正確にはわかりません..

私はすでに数週間過ごしましたが、疲れています。これは自分のスキル不足が原因であることはわかっています。

私が直面している問題は...

- (void)asyncLoadPersistentStores {
NSError *error = nil;

if ([self loadLocalPersistentStore:&error]) {
    NSLog(@"Added local store");
} else {
    NSLog(@"Unable to add local persistent store: %@", error);
}

//if iCloud is available, add the persistent store
//if iCloud is not available, or the add call fails, fallback to local storage
BOOL useFallbackStore = NO;
if ([self iCloudAvailable]) {
    if ([self loadiCloudStore:&error]) {
        NSLog(@"Added iCloud Store");

        //check to see if we need to seed data from the seed store
        if (SEED_ICLOUD_STORE) {
            //deleted because SEED_ICLOUD_STORE value is false
        }

        //check to see if we need to seed or migrate data from the fallback store
        NSFileManager *fm = [[NSFileManager alloc] init];
        if ([fm fileExistsAtPath:[[self fallbackStoreURL] path]]) {
            //migrate data from the fallback store to the iCloud store
            //there is no reason to do this synchronously since no other peer should have this data
            dispatch_queue_t globalQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
            dispatch_async(globalQueue, ^{
                NSError *blockError = nil;
                BOOL seedSuccess = [self seedStore:_iCloudStore
                          withPersistentStoreAtURL:[self fallbackStoreURL]
                                             error:&blockError];
                if (seedSuccess) {
                    NSLog(@"Successfully seeded iCloud Store from Fallback Store");
                } else {
                    NSLog(@"Error seeding iCloud Store from fallback store: %@", error);
                    abort();
                }
            });
        }
    } else {
        NSLog(@"Unable to add iCloud store: %@", error);
        useFallbackStore = YES;
    }
} else {
    useFallbackStore = YES;
}

if (useFallbackStore) {
    if ([self loadFallbackStore:&error]) {
        NSLog(@"Added fallback store: %@", self.fallbackStore);

        //you can seed the fallback store if you want to examine seeding performance without iCloud enabled
        //check to see if we need to seed data from the seed store
        if (SEED_ICLOUD_STORE) {
            //deleted
        }
    } else {
        NSLog(@"Unable to add fallback store: %@", error);
        abort();
        }
    }
}

これは CoreDataController.m (WWDC 2012 セッション 227) からのソース コードの一部であり、「loadLocalPersistentStore」メソッドを呼び出すとプログラムが停止し、「ローカル ストアがバンドルに見つかりません。ビルドの問題である可能性があります。makeストア ファイルがバンドル リソースとしてコピーされていることを確認してください。」

サンプルのように localStore.sqlite と fallbackStore.sqlite ファイルを持っていないことが原因だと思います。エラーになります。

しかし、私はその部分をスキップしますが(コメントしてください)、iCloudストアを追加できません:エラードメイン= NSCocoaErrorドメインコード= 134100というエラーメッセージが表示されたため、iCloudに接続できません。(Cocoa エラー 134100)" UserInfo=0x1dd93040 {metadata={ NSPersistenceFrameworkVersion = 419;"

iOS5のiCloudでコアデータについて多くのことを学び、ほぼ完璧に機能しました。でも今はバカみたい。私にできることは何もありません。私を助けてください。

奇妙なことに、Apple のサンプル コードには、iCloud アプリ ID、url 何かについて入力したコードがありません。

ありがとう。

4

1 に答える 1

5

また、Apple WWDC 2012 のサンプル iCloud コードを実装しようとしても問題がありました。Apple Developer Support にチケットをオープンしたところ、2012 年 11 月 15 日に返信がありました。

一部の開発者は、WWDC からのサンプルで iCloud と Core Data を採用する際に問題を抱えています。ただし、更新された SharedCoreData サンプル (WWDC から改善されたもの) があるので、代わりに使用する必要があります。CoreDataController オブジェクトは残りますが、クリーンアップおよび改善されています。最初にそのサンプルを実行して、iOS デバイス間で正しく同期されるかどうかを確認することをお勧めします。これは、変更を行う前に最初に実行することが重要です。このようにして、適切なベースラインを取得します。動作することを確認したら、その CoreDataController をアプリに採用します。

彼は、CoreDataController クラスが変更されたと述べています。AppDelegate も変更されました。新しいメソッドが追加され、コードがよりクリーンになりました。アプリで iCloud がほぼ動作するようになりましたが、最初のファイルのアップロードにまだ問題があります。今それを修正しようとしています。変更されていないコードで更新された SharedCoreData アプリを実行すると、完全に機能します。ですから、始めるには良い場所です。

Apple Developer Support でチケットを開く以外に、この新しいコードを入手する方法はわかりません (1 回 50 ドルです)。新しいプロジェクト (SharedCoreData という名前のまま) のサイズはわずか 1 MB です。ご希望があれば、メールでお送りしたいと思います。

アプリの初期ファイル アップロード ソリューションを見つけたら、ここに更新を投稿します。

于 2012-12-08T00:23:54.533 に答える