これは私のコアデータ構造です
エンティティ -カテゴリ
Attr - ID (NSString)主キー、名前(NSString)
エンティティ -製品
Attr - ID (NSString)、名前(NSString)、parentCategoryId (NSString)外部キー、....
上記からわかるように、Category の Idは Product の parentCategoryId を指しています。
この場合、 UITableView のセクション名として、product の当該の parentCatergoryId に関連付けられたカテゴリの名前を使用したいと考えています (私はfetchrequestで NSSortDescriptors のキーとして @"parentCategoryId" を使用しています) 。
英数字のテキスト、つまりparentCatrgoryIdを製品からカテゴリの名前にデコードするにはどうすればよいですか
編集
これが私がしたことであり、その作業です。しかし、私がしたことが効率的であるかどうかを尋ねたいのです。
parentCategoryIdNameという名前の属性をもう 1 つ追加し、これを使用して、簡単な操作を計算して正確な名前を格納しました。
.h ファイル
@property (nonatomic, retain) NSMutableArray *categoryArr;
@property (nonatomic, retain) NSMutableArray *productArr;
.m ファイル
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Category" inManagedObjectContext:self.MOContext];
// Setup the fetch request
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entity];
// [request setPredicate:[NSCompoundPredicate andPredicateWithSubpredicates:subpredicates]];
NSError *error;
NSMutableArray *mutableFetchResults = [[self.MOContext executeFetchRequest:request error:&error] mutableCopy];
[self setCategoryArr: mutableFetchResults];
NSEntityDescription *entity2 = [NSEntityDescription entityForName:@"Product" inManagedObjectContext:self.MOContext];
// Setup the fetch request
NSFetchRequest *request2 = [[NSFetchRequest alloc] init];
[request2 setEntity:entity2];
// [request2 setPredicate:[NSPredicate predicateWithFormat:@""]];
NSError *error2;
NSMutableArray *mutableFetchResults2 = [[self.MOContext executeFetchRequest:request2 error:&error2] mutableCopy];
[self setProductArr: mutableFetchResults2];
DBにデータを挿入するには
for (int i=0; i< [self.productArr count]; i++) {
Product *productEnt = [self.productArr objectAtIndex:i];
NSManagedObjectContext *context = self.MOContext;
for (int j=0; j<self.categoryArr.count; j++) {
Category *categroy = [self.categoryArr objectAtIndex:j];
if ([categroy.objectId isEqualToString:productEnt.parentCategoryId]) {
[productEnt setParentCategoryIdName:categroy.name];
}
// Save the context.
NSError *error = nil;
if (![context save:&error]) {
// Replace this implementation with code to handle the error appropriately.
// abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
}