私のアプリケーションは Web サービスを使用し、json でデータを取得する必要があります。json を解析し、永続ストアにデータをフィードする必要があります。実際のデバイスでアプリケーションをテストするまで、すべてがうまく機能していました。アプリケーションは、イライラするまでそれを保持しているように見え、最後に顔にうんちをしました x -(
ここにinsertOrReplaceObjectForEntityForNameのメソッドがあります
+(id) insertOrReplaceObjectForEntityForName:(NSString *)entityName inManagedObjectContext:_context WithPredicateString:(NSString *)predicateString, ...{
NSManagedObject *object;
va_list ap;
va_start(ap, predicateString);
NSFetchRequest *req = [[NSFetchRequest alloc] initWithEntityName:entityName];
NSPredicate *pred = [NSPredicate predicateWithFormat:predicateString arguments:ap];
[req setPredicate:pred];
int count = [_context countForFetchRequest:req error:nil];
if(count > 0){
NSArray *arr = [_context executeFetchRequest:req error:nil];
object = [arr objectAtIndex:0];
}
else{
object = [NSEntityDescription insertNewObjectForEntityForName:entityName inManagedObjectContext:_context];
}
va_end(ap);
return object;
}
ここでは、1 行の単純な操作に約 0.004 秒かかります。データの解析では、この操作を他の多くの操作と組み合わせて約 1000 回実行する必要があるため、解析が非常に重いプロセスになります。デフォルトのデータベースにはすでに多くの薬があり、薬が存在するかどうかを確認する必要があり、存在する場合はその値を編集する必要があります。
Drug *drug = [NSEntityDescription insertOrReplaceObjectForEntityForName:@"Drug" inManagedObjectContext:parsingContext WithPredicateString:[NSString stringWithFormat:@"drugId == '%@'",[drugDetails objectForKey:@"DrugId"]]];
アプリケーションで履歴を保持するためにコア データを使用していましたが、コア データから離れて履歴を保持することを忘れる必要があると思います。私はすでにアプリケーションの作成に多くの時間を費やしてきましたが、クライアントが足を引っ張っています。何か提案はありますか??