0

辞書を含むカスタム plist ファイルがあります。各ディクショナリには、1 台の車に関する情報が含まれています。

     <key>Ford</key>
<dict>
    <key>name</key>
    <string>Ford</string>
    <key>color</key>
    <string>green</string>
    <key>price</key>
    <integer>45000</integer>
</dict

    <key>Toyota</key>
<dict>
    <key>name</key>
    <string>Toyota</string>
    <key>color</key>
    <string>blue</string>
    <key>price</key>
    <integer>40000</integer>
</dict

    <key>BMW</key>
<dict>
    <key>name</key>
    <string>BMW</string>
    <key>color</key>
    <string>blue</string>
    <key>price</key>
    <integer>40000</integer>
</dict>

UITableView もあり、この plist からいくつかの車を入力します。

 NSEnumerator *enumerator = [dictionary objectEnumerator];
    id returnValue;


    while ((returnValue = [enumerator nextObject])) 
    {

        if ([[returnValue valueForKey:@"color"]isEqualToString:@"blue")
        {  
            [array addObject:[returnValue valueForKey:@"name"]];
        }

質問:いくつかの車を含む UITableView を取得した場合、価格で並べ替えるにはどうすればよいですか? たとえば、BMW は Ford よりも安いので、最初のセルに入れ、Ford を 2 番目のセルに入れる必要があります。Apple が配列を並べ替える簡単な方法を既に作成していることは知っていますが、ここでどのように使用できますか? ありがとう !マックス

4

2 に答える 2

3

これを試してください:

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"price"  ascending:YES];
[array sortUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];
于 2012-05-12T17:11:16.920 に答える
0

最初に price の値をリストに抽出します。次に、NSSorDescriptor を使用します。

{
   NSArray *carArray=[[NSArray alloc] initwithContentsofFile:@"youFileName"    ofType:@"plist"];
   NSmutableArray *priceList=[[NSMutableArray alloc] init];
   for(int index=0;index<[carArray count];index++)
   {
      NSDictionary *valueList=[carArray objectAtIndex:index];
      [priceList addObject:[valueList objectForKey:@"Price"]];

   }
   NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"price"  ascending:YES];
   [priceList sortUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];

これで、Price に基づいて並べ替えられた配列が取得されます。}

于 2012-05-14T12:29:49.713 に答える