NSArray中的数据进行排序

NSArray中的数据排序,经常是利用NSSortDescriptor。

官方文档:http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSSortDescriptor_Class/Reference/Reference.html


//组装数据
    array=[[NSMutableArray alloc] initWithCapacity:11];
   
    NSMutableDictionary *dir6=[[NSMutableDictionary alloc] initWithCapacity:1];
    [dir6 setObject:@"曹磊" forKey:@"FriendName"];
    [dir6 setObject:@"曹磊" forKey:@"FriendID"];
    [array addObject:dir6];
    [dir6 release];

   
    NSMutableDictionary *dir=[[NSMutableDictionary alloc] initWithCapacity:1];
    [dir setObject:@"王军" forKey:@"FriendName"];
    [dir setObject:@"曹磊" forKey:@"FriendID"];
    [array addObject:dir];
    [dir release];
   
    NSMutableDictionary *dir1=[[NSMutableDictionary alloc] initWithCapacity:1];
    [dir1 setObject:@"111" forKey:@"FriendName"];
    [dir1 setObject:@"曹磊" forKey:@"FriendID"];
    [array addObject:dir1];
    [dir1 release];
   
    NSMutableDictionary *dir2=[[NSMutableDictionary alloc] initWithCapacity:1];
    [dir2 setObject:@"王兴朝" forKey:@"FriendName"];
    [dir2 setObject:@"曹磊" forKey:@"FriendID"];
    [array addObject:dir2];
    [dir2 release];
   
    NSMutableDictionary *dir3=[[NSMutableDictionary alloc] initWithCapacity:1];
    [dir3 setObject:@"wangjun" forKey:@"FriendName"];
    [dir3 setObject:@"曹磊" forKey:@"FriendID"];
    [array addObject:dir3];
    [dir3 release];
   
    NSMutableDictionary *dir4=[[NSMutableDictionary alloc] initWithCapacity:1];
    [dir4 setObject:@"apk" forKey:@"FriendName"];
    [dir4 setObject:@"曹磊" forKey:@"FriendID"];
    [array addObject:dir4];
    [dir4 release];
   
   
    self.myArray=array;
    [array release];
    NSLog(@">>>>>>排序前>>>>>>>>");
    for (int i=0; i<[self.myArray count]; i++) {
        NSLog(@"%@",[[self.myArray objectAtIndex:i] objectForKey:@"FriendName"]);
    }
   
    NSSortDescriptor *sorter = [[NSSortDescriptor alloc] initWithKey:@"FriendName" ascending:YES];
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:&sorter count:1];
    NSArray *sortedArray = [self.myArray sortedArrayUsingDescriptors:sortDescriptors];

   
    [sorter release];

    NSLog(@"\n\n\n\n\n>>>>>>排序后>>>>>>>>");
    for (int i=0; i<[sortedArray count]; i++) {
        NSLog(@"%@",[[sortedArray objectAtIndex:i] objectForKey:@"FriendName"]);
    }

 

数据结果:

2011-04-21 18:31:36.556 sort[4041:707] >>>>>>排序前>>>>>>>>
2011-04-21 18:31:36.567 sort[4041:707] 曹磊
2011-04-21 18:31:36.571 sort[4041:707] 王军
2011-04-21 18:31:36.575 sort[4041:707] 111
2011-04-21 18:31:36.578 sort[4041:707] 王兴朝
2011-04-21 18:31:36.582 sort[4041:707] wangjun
2011-04-21 18:31:36.585 sort[4041:707] apk
2011-04-21 18:31:36.589 sort[4041:707]

 

>>>>>>排序后>>>>>>>>
2011-04-21 18:31:36.595 sort[4041:707] 111
2011-04-21 18:31:36.599 sort[4041:707] apk
2011-04-21 18:31:36.602 sort[4041:707] wangjun
2011-04-21 18:31:36.606 sort[4041:707] 曹磊
2011-04-21 18:31:36.610 sort[4041:707] 王兴朝
2011-04-21 18:31:36.613 sort[4041:707] 王军


### Verilog 中 `if` 语句嵌套的用法 在 Verilog 中,`if` 语句用于条件判断。当需要更复杂的逻辑控制时,可以在一个 `if` 或者 `else if` 块内再定义另一个 `if` 语句,形成所谓的嵌套结构。 #### 语法说明 基本形式如下: ```verilog if (condition_1) begin // Statements when condition_1 is true if (condition_2) begin // Statements when both conditions are true end else begin // Statements when only condition_1 is true but not condition_2 end end else begin // Statements when neither of the above conditions hold end ``` 这种结构允许设计人员实现多级分支逻辑处理,在硬件描述语言编程中非常有用。 #### 实际应用案例 下面给出一段具体的例子来展示如何使用嵌套的 `if...else` 结构: 假设有一个简单的状态机模块,它接收两个输入信号 `input_a` 和 `input_b` 并根据这些输入决定下一个状态 `next_state` 的值[^1]。 ```verilog module state_machine ( input wire clk, input wire reset, input wire input_a, input wire input_b, output reg [1:0] next_state ); always @(posedge clk or posedge reset) begin if (reset) begin next_state <= 2'b00; end else begin case(next_state) 2'b00 : begin if(input_a && !input_b) begin next_state <= 2'b01; end else if (!input_a && input_b) begin next_state <= 2'b10; end else begin next_state <= 2'b00; end end 2'b01 : begin if(!input_a && !input_b) begin next_state <= 2'b11; end else begin next_state <= 2'b01; end end default : begin next_state <= 2'b00; end endcase end end endmodule ``` 在这个例子中可以看到多个层次上的 `if` 判断被用来精确地控制不同状态下应该采取的动作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值