0

私は次のコードでnspredicateを使用することに固執しています:

for (int i=0; i<[nodes count]; i++)
{
    NSMutableDictionary *dict=[nodes objectAtIndex:i];

    NSInteger docid = [[dict objectForKey:@"docid"] integerValue];
    NSString *strPred = [NSString stringWithFormat:@"docId == %i",docid];
    [request setPredicate:[NSPredicate predicateWithFormat:strPred]];
    NSArray* objects=[[context executeFetchRequest:request error:nil] retain];
   NSPredicate *objCount = [NSPredicate predicateWithFormat:[objects count]];

    if([objects count])//how do i reduce these if else block too using nsprdicate
    {
        [dict setObject:@"1" forKey:@"isbookthere"];
    }
    else
    {
        [dict setObject:@"0" forKey:@"isbookthere"];
    }
    [objects release];
    [nodes replaceObjectAtIndex:i withObject:dict];
}

カウントが4000になると、問題の原因となる多くの反復がループになるため、ifelseブロックも削除する必要があります。このリスクを軽減するために、NSPredicateを使用することにします。

4

1 に答える 1

0

単純に var をゼロで初期化することができます。オブジェクト数がゼロより大きい場合は、単純に var 値を変更します。あなたの説明から、これくらいは予想できました。どこか間違っていたら教えてください。

于 2012-07-09T11:27:40.663 に答える