0

NSPredicate を使用して NSMutableArray からデータを抽出します。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", value];
NSArray *results = [array_to_search filteredArrayUsingPredicate:predicate];

私が使用する場合:

NSLog(@"%@", results);

私は得る:

({pub_id = 102 "pub_name" = "some publisher" city = "Peshawar"});

pub_idpub_name、の 3 つの項目すべての値を抽出したいと思いますcity

4

4 に答える 4

1

返されるのは、1 つのオブジェクトを含む配列です (中括弧で示されているの{}は辞書を意味します)。3 つのコンポーネントのそれぞれを抽出するには、次のようにします。

NSString *pub_id = [[results objectAtIndex:0] valueForKey:@"pub_id"];
NSString *pub_name = [[results objectAtIndex:0] valueForKey:@"pub_name"];
NSString *city = [[results objectAtIndex:0] valueForKey:@"city"];

このソリューションは、提供した例にのみ適していることに注意してください。クエリが配列に複数のオブジェクトを返す場合は、列挙/for ループを使用して結果を読み取る必要があります。

于 2012-07-21T13:13:17.747 に答える
0

述語を使用して配列から取得するオブジェクトは、明らかに NSDictionary です。次のコードを使用します。

NSString *city = [[results objectAtIndex:0] valueForKey:@"city"];

など。

于 2012-07-21T15:21:09.987 に答える
0

この 3 つのオブジェクトを別々に取得したいということはわかりましたね。私が正しい場合:

NSLog(@"PUBID: %d \n PUBNAME: %@ \n CITY: %@", [[results objectAtIndex:0] intValue], [results objectAtIndex:1], [results objectAtIndex:2]);

このコードは
PUBID: 102 PUBNAME: some publisher CITY: Peshawar を出力するはずです。

だからあなたの結果

[array_to_searchfilteredArrayUsingPredicate:predicate];

は別の配列であり、それを objectAtIndex で使用できます。

于 2012-07-21T13:13:58.960 に答える
0

辞書からすべての値を配列に取得するには、次のようにします。

[dictionary allValues];
于 2012-07-21T15:06:03.720 に答える