1
私はこれらの2つのクラスメソッドを持っていますが、それぞれに述語があります。関数は、mapKitとUITable Viewに表示される情報を保持することです。しかし、私は述語を除いて、繰り返しコードを見る。私の質問です:どのようにこれらの繰り返しを避けることができますか?NSPredicateを使用するメソッドでコードの重複を減らす
+ (NSArray*)spotType:(NSString*)type{
NSPersistentContainer *persistenceContainer = [AppDelegate sharedDelegate].persistentContainer;
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"type =%@", type];
NSManagedObjectContext *context = persistenceContainer.viewContext;
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Spot"];
[request setPredicate:predicate];
NSError *error;
NSArray *result = [context executeFetchRequest:request error:&error];
if (error != nil) {
NSLog(@"[Spot spotType] -> %@", [error localizedDescription]);
return nil;
}
return result;
}
+ (NSArray*)spotWithType:(NSString*)type{
NSPersistentContainer *persistenceContainer = [AppDelegate sharedDelegate].persistentContainer;
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"NOT (type = %@)", type];
NSManagedObjectContext *context = persistenceContainer.viewContext;
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Spot"];
[request setPredicate:predicate];
NSError *error;
NSArray *result = [context executeFetchRequest:request error:&error];
if (error != nil) {
NSLog(@"[Spot spotWithType] -> %@", [error localizedDescription]);
return nil;
}
return result;
}
あなたは+(NSArrayの*)spotWithType '書くことができる:(NSStringの*)現在入力します。 (BOOL)プレゼント 'その中で、述語を除き、その値をチェックし、正しい述語を作成する以外は同じことを行います。 +(NSArray *)型{return [self spotWithType:type present:YES]} '+(NSArray *)型は、 NO];} '? 'executeFetchRequest:error:'のために別の方法でログを記録する場合は、 'NSError'パラメータを追加することができます。 – Larme