-1

辞書を作成し、辞書に名前キー値データを設定し、配列に辞書を追加して、for ループを使用してデータを繰り返します。しかし、名前がvinod.belowであるキーの名前を検索したいのは私のコードです。

    NSDictionary *dic2 =[[NSDictionary alloc] init];        
    NSDictionary *dic1 =[[NSDictionary alloc] init];
    [dic1 setValue:@"Vinod" forKey:@"fname"];
    [dic2 setValue:@"vishw" forKey:@"lname"];


    [dic2 setValue:@"Tazeen" forKey:@"fname"];  

    [dic2 setValue:@"momin" forKey:@"lname"];


    NSMutableArray *arr =[[NSMutableArray alloc] initWithObjects:dic1,dic2, nil];

    NSLog(@"inside the view did load");


    NSMutableArray *arr2=[[NSMutableArray alloc] init];

    for (int i=0; i<[arr count]; i++)
    {
        NSString *str =[arr objectAtIndex:i];

        NSLog(@"inside the loop");

        [arr2 addObject:str];

     //   NSArray *arr =[[NSArray alloc] initWithObjects:str, nil];
        if ([arr2 containsObject:@"vinod"])
        {
            NSLog(@"first name found in the array");
        }
    }

前もって感謝します

4

4 に答える 4

3

コードには、不変の辞書に値を追加するなど、いくつかのばかげたエラーが含まれています。

私はコードを修正して見つけました:

NSMutableDictionary *dic2 =[[NSMutableDictionary alloc] init];
NSMutableDictionary *dic1 =[[NSMutableDictionary alloc] init];
[dic1 setValue:@"Vinod" forKey:@"fname"];
[dic2 setValue:@"vishw" forKey:@"lname"];


[dic2 setValue:@"Tazeen" forKey:@"fname"];

[dic2 setValue:@"momin" forKey:@"lname"];


NSMutableArray *arr =[[NSMutableArray alloc] initWithObjects:dic1,dic2, nil];

for (NSDictionary *dictObj in arr) {
    if ([[dictObj valueForKey:@"fname"]isEqualToString:@"Vinod"]) {
        NSLog(@"name found");
    }
}
于 2012-12-25T06:45:42.390 に答える
0

"これを試して:-

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"fname = %@",@"Vinod];
    NSMutableArray *aMutArray = [NSMutableArray arrayWithArray:aYourArray];
    [aMutArray filterUsingPredicate:predicate];
    NSMutableDictionary *aDictTemp = [aMutArray objectAtIndex:0];

通常、NSPredicate は、配列を除外するか、配列内を検索するために使用されます。詳細については、このリンクを確認してください:-

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSPredicate_Class/Reference/NSPredicate.html

于 2012-12-25T07:01:44.340 に答える
0

OK...おそらく完全な書き直しが必要です。あなたのコードは複雑で、いくつかの場所で単純に間違っています。これについては以下で説明します。

NSMutableDictionary *dic1 =[[NSMutableDictionary alloc] init]; //Your dictionary needs to 
//be mutable, otherwise it will throw exceptions.  
//NSDictionary is immutable.
NSMutableDictionary *dic2 =[[NSMutableDictionary alloc] init];
[dic1 setValue:@"Vinod" forKey:@"fname"];
[dic1 setValue:@"vishw" forKey:@"lname"];


[dic2 setValue:@"Tazeen" forKey:@"fname"];
[dic2 setValue:@"momin" forKey:@"lname"];

//Add all the values from the dictionaries into one master array.
NSMutableArray *arr =[[NSMutableArray alloc] init];
[arr addObjectsFromArray:[dic1 allValues]];
[arr addObjectsFromArray:[dic2 allValues]];

NSLog(@"inside the view did load");

//load those values into a set for faster lookup
NSSet *set = [[NSSet alloc]initWithArray:arr];

//For-in the values.  Fast enumeration is a lot better at this than c-loops
for (NSString *value in arr) {
    if ([set containsObject:@"Vinod"]) {
        NSLog(@"first name found in the array");
    }
}
于 2012-12-25T06:35:25.283 に答える
0

これがお役に立てば幸いです。このコード例では、ブロックでNSFastEnumerationを使用しています。

NSDictionary *dic2 =[[NSDictionary alloc] init];
NSDictionary *dic1 =[[NSDictionary alloc] init];
[dic1 setValue:@"Vinod" forKey:@"fname"];
[dic2 setValue:@"vishw" forKey:@"lname"];


[dic2 setValue:@"Tazeen" forKey:@"fname"];

[dic2 setValue:@"momin" forKey:@"lname"];


NSMutableArray *arr =[[NSMutableArray alloc] initWithObjects:dic1,dic2, nil];

NSLog(@"inside the view did load");

[arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

    if ([[obj valueForKey:@"fname"] isEqual:@"Vinod"]) {

        NSLog(@"Found it!");

        *stop = YES;

    }

}];
于 2012-12-25T06:37:13.600 に答える