2017-03-04 7 views
0

を取る私はcoredata管理するために、私のアプリでmagicalrecordを使用しています、すべてのものは今完璧ですが、私は問題を抱えています、私はこのコードを使用して10Kのエンティティを作成しました私はデータベースの変更をmagicalrecordを使って実行します。ルートコンテキストに保存している間、4,5秒間立ち往生してしまいます。メインスレッドまたはバックグラウンドスレッドの場合でもUIフリーズになります。MagicalRecord省は時間

編集:私は関係を削除する場合、私は、問題を発見した 保存からすると、それは私がアウト側ブロックから組織をフェッチする場合、立ち往生いけないし、それがスローブロックセーブ内で割り当てるブロック(組織です)組織が異なるコンテキストで作成されていることは例外です。

+1

を見?ブロッキングコールを使用せず、進行状況インジケーターをユーザーに表示してください。 – Sulthan

+0

私の質問は高速作成ではなく、10k個のエンティティを持っているか、ルートコンテキストへの保存に時間がかかります。 –

+0

10kのエンティティを作成し、そのコンテキストで保存し、1つのエンティティを作成せず、そのコンテキストで保存して10kを繰り返すことができます。 – Larme

答えて

0
//case A 
[MagicalRecord saveWithBlockAndWait:^(NSManagedObjectContext *localContext) { 

    NSLog(@"current thread is main thread %d and thread is %@", [NSThread isMainThread], [NSThread currentThread]); 

    //some ManagedObject code 
    ... 
}]; 

//case B 
[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) { 

    NSLog(@"current thread is main thread %d and thread is %@", [NSThread isMainThread], [NSThread currentThread]); 

    //some ManagedObject code 
    ... 
}]; 

テストこのコードを、あなたは格納するために10Kの実体を持っている場合、UIが立ち往生、Aは常にMainThreadで実行する場合があります。

enter image description here

10Kエンティティの作成が高速である必要がありますなぜ、このhttps://github.com/magicalpanda/MagicalRecord/blob/master/Docs/Saving-Entities.md

関連する問題