A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

TRStudent.h文件中代码
  1. #import <Foundation/Foundation.h>

  2. @interface TRStudent : NSObject
  3. @property(nonatomic,assign)int age;
  4. @property(nonatomic,copy)NSString *name;
  5. -(id)initWithAge:(int)age andName:(NSString*)name;
  6. +(TRStudent*)studentWithAge:(int)age andName:(NSString*)name;
  7. -(NSComparisonResult)compare:(TRStudent*)otherStudent;
  8. @end
复制代码
TRStudent.m文件中代码
  1. #import "TRStudent.h"

  2. @implementation TRStudent
  3. -(NSUInteger)hash{
  4.     NSLog(@"hash方法执行了");
  5.     return [super hash];
  6.     //return 1;
  7. }
  8. -(BOOL)isEqual:(id)object{
  9.     NSLog(@"isEqual方法执行了");
  10.     return [super isEqual:object];
  11.     /*
  12.     //1.自反性
  13.     if(self == object){//两个引用指向同一个对象
  14.         return YES;
  15.     }else{
  16.         //2.类型是否相同 如果类型不相同 肯定不同
  17.         if(![object isMemberOfClass:[TRStudent class]]){
  18.             return NO;
  19.         }else{//两个对象的类型相同
  20.               //3.才比较对象的值
  21.             TRStudent *otherStu = object;
  22.             if (self.age==otherStu.age&&[self.name isEqualToString:otherStu.name]) {
  23.                 return YES;
  24.             }else{
  25.                 return NO;
  26.             }
  27.         }
  28.     }
  29.     return NO;
  30.     */
  31. }

  32. -(id)initWithAge:(int)age andName:(NSString*)name{
  33.     self = [super init];
  34.     if (self) {
  35.         self.age = age;
  36.         self.name = name;
  37.     }
  38.     return self;
  39. }
  40. +(TRStudent*)studentWithAge:(int)age andName:(NSString*)name{
  41.     return [[TRStudent alloc]initWithAge:age andName:name];
  42. }
  43. -(NSComparisonResult)compare:(TRStudent*)otherStudent{
  44.     return [self.name compare:otherStudent.name];
  45. }
  46. @end
复制代码
main.m文件中的代码
  1. <font color="#bb2ca2" style="font-size: 13px;">#import <Foundation/Foundation.h></font>
  2. <font color="#bb2ca2" style="font-size: 13px;">#import "TRStudent.h"</font>
  3. <font color="#bb2ca2" style="font-size: 13px;">int main(int argc, const char * argv[])</font>
  4. <font color="#bb2ca2" style="font-size: 13px;">{</font>

  5. <font color="#bb2ca2" style="font-size: 13px;">    @autoreleasepool {</font>
  6. <font color="#bb2ca2" style="font-size: 13px;">        TRStudent *stu1 = [TRStudent studentWithAge:18 andName:@"zhangsan"];</font><font color="#ff0000" size="4">1.新建各个学生对象</font>
  7. <font color="#bb2ca2" style="font-size: 13px;">        TRStudent *stu2 = [TRStudent studentWithAge:19 andName:@"lisi"];</font>
  8. <font color="#bb2ca2" style="font-size: 13px;">        TRStudent *stu3 = [TRStudent studentWithAge:20 andName:@"wangwu"];</font>
  9. <font color="#bb2ca2" style="font-size: 13px;">        TRStudent *stu4 = [TRStudent studentWithAge:21 andName:@"zhaoliu"];</font>
  10. <font color="#bb2ca2" style="font-size: 13px;">        NSDictionary *stus = [NSDictionary dictionaryWithObjectsAndKeys:stu1,stu1.name,stu2,stu2.name,stu3,stu3.name,stu4,stu4.name, nil];</font><font size="4" color="#ff0000">2.将新建的学生对象放入一个字典中</font>
  11. <font color="#bb2ca2" style="font-size: 13px;">        //排序前</font><font color="#ff0000" size="4">3.1第一种排序方法</font>
  12. <font color="#bb2ca2" style="font-size: 13px;">        NSArray *allKeys = [stus allKeys];</font>
  13. <font color="#bb2ca2" style="font-size: 13px;">        for (NSString *key in allKeys) {</font>
  14. <font color="#bb2ca2" style="font-size: 13px;">            //key->value</font>
  15. <font color="#bb2ca2" style="font-size: 13px;">            TRStudent *stu = stus[key];</font>
  16. <font color="#bb2ca2" style="font-size: 13px;">            NSLog(@"name:%@ age:%d",stu.name,stu.age);</font>
  17. <font color="#bb2ca2" style="font-size: 13px;">        }</font>
  18. <font color="#bb2ca2" style="font-size: 13px;">        //排序后</font>
  19. <font color="#bb2ca2" style="font-size: 13px;">        //1.排序的第一种方式 无法对字典进行排序 只能对key进行排序</font>
  20. <font color="#bb2ca2" style="font-size: 13px;">        /*</font>
  21. <font color="#bb2ca2" style="font-size: 13px;">        NSArray *sortedAllKeys = [allKeys sortedArrayUsingSelector:@selector(compare:)];</font>
  22. <font color="#bb2ca2" style="font-size: 13px;">        for (NSString *key in sortedAllKeys) {</font>
  23. <font color="#bb2ca2" style="font-size: 13px;">            //key->value</font>
  24. <font color="#bb2ca2" style="font-size: 13px;">            TRStudent *stu = stus[key];</font>
  25. <font color="#bb2ca2" style="font-size: 13px;">            NSLog(@"name:%@ age:%d",stu.name,stu.age);</font>
  26. <font color="#bb2ca2" style="font-size: 13px;">        }</font>
  27. <font color="#bb2ca2" style="font-size: 13px;">         */</font>
  28. <font color="#bb2ca2" style="font-size: 13px;">        //2.字典排序方式2     </font><font color="#ff0000" size="4">3.2第二种排序方法</font>
  29. <font color="#bb2ca2" style="font-size: 13px;">        NSArray *sortedAllKeys = [stus keysSortedByValueUsingSelector:@selector(compare:)];</font>
  30. <font color="#bb2ca2" style="font-size: 13px;">        for (NSString *key in sortedAllKeys) {</font>
  31. <font color="#bb2ca2" style="font-size: 13px;">            //key->value</font>
  32. <font color="#bb2ca2" style="font-size: 13px;">            TRStudent *stu = stus[key];</font>
  33. <font color="#bb2ca2" style="font-size: 13px;">            NSLog(@"name:%@ age:%d",stu.name,stu.age);</font>
  34. <font color="#bb2ca2" style="font-size: 13px;">        }</font>
  35. <font color="#bb2ca2" style="font-size: 13px;">        </font>
  36. <font color="#bb2ca2" style="font-size: 13px;">        NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@1,@"one",@2,@"two", nil];</font>
  37. <font color="#bb2ca2" style="font-size: 13px;">        [dic writeToFile:@"/Users/yr/Desktop/dic.xml" atomically:NO];</font><font color="#ff0000" size="4">4.将排序好的对象写进dic.xml文件中</font>
  38. <font color="#bb2ca2" style="font-size: 13px;">        </font>
  39. <font color="#bb2ca2" style="font-size: 13px;">    }</font>
  40. <font color="#bb2ca2" style="font-size: 13px;">    return 0;</font>
  41. <font color="#bb2ca2" style="font-size: 13px;">}</font>
复制代码
一共有两种排序方法,在TRStudent.h和TRStudent.m文件中建立一个student对象,.h文件是对该对象属性方法的申明,.m文件是对该对象具体属性和方法的实现,然后在main.m中新建该对象,对他进行赋值,从而得到对字典中的key的排序的一个范例



5 个回复

倒序浏览
main.m文件中的代码我加了注释,导致解析的时候把样式也解析上去了,现在从新发一遍main.m中的文件
  1. #import <Foundation/Foundation.h>
  2. #import "TRStudent.h"
  3. int main(int argc, const char * argv[])
  4. {

  5.     @autoreleasepool {
  6.         TRStudent *stu1 = [TRStudent studentWithAge:18 andName:@"zhangsan"];
  7.         TRStudent *stu2 = [TRStudent studentWithAge:19 andName:@"lisi"];
  8.         TRStudent *stu3 = [TRStudent studentWithAge:20 andName:@"wangwu"];
  9.         TRStudent *stu4 = [TRStudent studentWithAge:21 andName:@"zhaoliu"];
  10.         NSDictionary *stus = [NSDictionary dictionaryWithObjectsAndKeys:stu1,stu1.name,stu2,stu2.name,stu3,stu3.name,stu4,stu4.name, nil];
  11.         //排序前
  12.         NSArray *allKeys = [stus allKeys];
  13.         for (NSString *key in allKeys) {
  14.             //key->value
  15.             TRStudent *stu = stus[key];
  16.             NSLog(@"name:%@ age:%d",stu.name,stu.age);
  17.         }
  18.         //排序后
  19.         //1.排序的第一种方式 无法对字典进行排序 只能对key进行排序
  20.         /*
  21.         NSArray *sortedAllKeys = [allKeys sortedArrayUsingSelector:@selector(compare:)];
  22.         for (NSString *key in sortedAllKeys) {
  23.             //key->value
  24.             TRStudent *stu = stus[key];
  25.             NSLog(@"name:%@ age:%d",stu.name,stu.age);
  26.         }
  27.          */
  28.         //2.字典排序方式2
  29.         NSArray *sortedAllKeys = [stus keysSortedByValueUsingSelector:@selector(compare:)];
  30.         for (NSString *key in sortedAllKeys) {
  31.             //key->value
  32.             TRStudent *stu = stus[key];
  33.             NSLog(@"name:%@ age:%d",stu.name,stu.age);
  34.         }
  35.         
  36.         NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@1,@"one",@2,@"two", nil];
  37.         [dic writeToFile:@"/Users/yr/Desktop/dic.xml" atomically:NO];
  38.         
  39.     }
  40.     return 0;
  41. }
复制代码
回复 使用道具 举报
帮顶,顺便问问楼主写的是实现是的.....
回复 使用道具 举报
很用心,但表示没看懂
回复 使用道具 举报
liruixue 发表于 2015-11-23 16:03
很用心,但表示没看懂

就是一些字典根据键值对进行排序
回复 使用道具 举报
来自山区的孩子 发表于 2015-11-23 15:58
帮顶,顺便问问楼主写的是实现是的.....

写的很明了了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马