2011-12-10 7 views
0

コアデータからデータを削除する方法次のコードを使用して削除しようとしています:私はそれが親だし、ChildCategoryはいくつかを持っていることなど、いくつかのChildCategoryを有していてもよく 1. RootCategory 2. ChildCategory</p> <p>とRootCategoryを命名した2つのエンティティコアデータからエンティティを削除しようとした

-(void)deleteCategory:(NSInteger)caterogyId 
{ 
    NSManagedObjectModel *dataModel = [self dataModel]; 

    // NLog(@"%@", TO_JSON(@"results", results, nil)); 
    RootCategory *rootCategory = (RootCategory *) [dataModel fetchOne:CD_RootCategory 
                    predicate:@"categoryId == %d and parentChildCategory 
== nil", categoryId]; 
    if (rootCategory.childCategorys.count != 0) { 
     // delete everything from under the leaves in this category 

     for (ChildCategory *childCategory in rootCategory.childCategorys) { 
      for (RootCategory *rootCategory in childCategory.childRootCategory) 
       [dataModel deleteEntity:rootCategory]; 

     } 
    } 
} 

対応するレコードはコアデータDBから削除されていません。 なぜこのようなことが起きるのですか?私はこのdeleteEntityを2通りの方法で呼び出します。 1つのビューの1つのデータセットで完璧に動作し、別のビューから別のデータセットを削除しようとしています。

誰でも解決できますか?

答えて

0

二つのダムの質問:

  1. あなたはそれがあなたのループに入るだと確信していますか?

  2. すべての削除後にコンテキストの保存を実行しましたか?

0

エンティティ(コアデータ内のオブジェクトのクラスまたは "テンプレート"に似ています)ではなく、管理対象オブジェクトを削除することをお勧めします。

このためにはNSManagedObjectContextdeleteObject:メソッドを使用する必要があります。

+0

しかし、コンテキストを保存すると、基本的には同じことになります。 – gurooj

+2

いいえ、間違いなく同じことではなく、コンテキストの保存とは関係ありません。 – omz

+0

違いを説明できますか?私は本当に知りたいので。 – gurooj

関連する問題