私はSearchStringTooltip
ManagedObject を持っています。プロパティ@dynamic tooltipText;
付き (NSString)
データベースに新しいツールチップを動的に追加する必要がありますが、必要なのは一意の値 (インセンシティブ) だけです。
一度に 100 を超える可能性があります。そして、私が一意のものをチェックするたびに..
次のようになります。
if (newTooltips.count == 0)
return;
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"SearchStringTooltip"
inManagedObjectContext:self.moc];
NSFetchRequest *request = [NSFetchRequest new];
[request setEntity:entity];
for (NSString *name in newTooltips) {
[request setPredicate:[NSPredicate predicateWithFormat:@"tooltipText = %@", name]]; //like = (=) + time *2(sometimes *3) ofcourse i know i need like.. Its insensitive
NSInteger count = [self.moc countForFetchRequest:request error:nil]; //But its is very expensive operation expensive
if (count > 0) {
continue;
}
DBSearchStringTooltip *tooltip = [NSEntityDescription insertNewObjectForEntityForName:@"SearchStringTooltip"
inManagedObjectContext:self.moc];
tooltip.tooltipText = name;
}
どうすればメモリを安くすることができますか?一意のチェックには 10,000 を超えるツールチップが存在する可能性があります...そして、それらすべてをチェックする必要があります。