当前位置: 首页 > 编程笔记 >

Objective-C中NSNumber与NSDictionary的用法简介

太叔正文
2023-03-14
本文向大家介绍Objective-C中NSNumber与NSDictionary的用法简介,包括了Objective-C中NSNumber与NSDictionary的用法简介的使用技巧和注意事项,需要的朋友参考一下

NSNumber的常用方法

在Objective-c中有int的数据类型,那为什么还要使用数字对象NSNumber?这是因为很多类(如NSArray)都要求使用对象,而int不是对象。
NSNumber就是数字对象我们可以使用NSNumber对象来创建和初始化不同类型的数字对象。
NSNumber
   + (NSNumber *)numberWithInt:(int)value;
   + (NSNumber *)numberWithDouble:(double)value;
   - (int)intValue;
   - (double)doubleValue;
   .....................(对于每个基本类型,类方法都为这它分配了一个NSNumber对象,并将其设置为指定的值,这些方法都是以numberWith开始的,之后是类型,如numberWithFloat,numberWithLong,numberWithInteger.....)
包装后取出来的方法如下:

下面就拿int做个demo:


void number() {  

    // 将int类型的10 包装成 一个NSNumber对象  

    NSNumber *number = [NSNumber numberWithInt:10];  

    NSLog(@"number=%@", number);  

      

    NSMutableArray *array = [NSMutableArray array];  

    // 添加数值到数组中  

    [array addObject:number];  

      

    // 取出来还是一个NSNumber对象,不支持自动解包(也就是不会自动转化为int类型)  

    NSNumber *number1 = [array lastObject];  

      

    // 将NSNumber转化成int类型  

    int num = [number1 intValue];  

    NSLog(@"num=%i", num);  

}  

NSDictionary一些常用用法


NSArray * skyAArrays = [NSArray arrayWithObjects:@"A天空1号",@"A天空2号",@"A天空3号",nil];

    NSArray * skyBArrays = [NSArray arrayWithObjects:@"B天空1号",@"B天空2号",@"B天空3号",nil];

    NSArray * skyCArrays = [NSArray arrayWithObjects:@"C天空1号",@"C天空2号",@"C天空3号",nil];

    

    // NSArray * skyArray = [NSArray arrayWithObjects:skyAArrays,skyBArrays,skyCArrays, nil];

    

   //字典中所有的key

    NSArray * keys = [NSArray arrayWithObjects:@"name",@"sex",@"age",nil];

   //字典中所有跟key对应的value

    NSArray * values = [NSArray arrayWithObjects:@"liuhui",@"男",[NSNumbernumberWithInt:36],nil];

   //创建字典对象方法1

    NSDictionary * myDic = [[NSDictionary alloc]initWithObjects:values forKeys:keys];

    NSLog(@"my dic = %@",myDic);

   // 创建字典对象方法2    

    NSDictionary * yourDic = [[NSDictionary alloc] initWithObjectsAndKeys:skyAArrays,@"A",skyBArrays,@"B",skyCArrays,@"C",nil];

    NSLog(@"your dic = %@",yourDic);

    

    NSLog(@"%@",[yourDic objectForKey:@"A"]);

    // - (NSArray *)allKeys; 返回的是 NSArray类型,方便用 objectAtIndex取出一个个key

    NSLog(@"%@",[yourDic allKeys]);

    NSLog(@"%@",[yourDic allValues]);

    

   //添加数据(setObject 一般没有一种key才添加,有同名的key而用这种方法,会覆盖掉),注意:id key  是成对出现的  

    [mutableDictionary setObject:@"good lucky"forKey:@"why"];  

    [mutableDictionary setObject:@"bye bye" forKey:@"how"]; 

   //删除指定键值的数据      [mutableDictionary removeObjectForKey:..];     //删除所有数据      [mutableDictionary removeAllObjects]; 

    //字典的普通遍历(无序)     for (int i =0; i < [yourDic count]; i++) {             NSLog(@"key = value <====> %@ = %@",[[yourDic allKeys] objectAtIndex:i],[yourDic objectForKey:[[yourDic allKeys]objectAtIndex:i]]);     }         // 字典的快速遍历 取出来的obj一定是key     for (id obj in yourDic) {            NSLog(@"%@",obj);         id value = [yourDic objectForKey:obj];           NSLog(@"%@",value);     }

 类似资料:
  • 问题内容: 用Java 最接近Objective-C的实现是什么?对我来说,看起来像,但是我对Objective-C还是很陌生。 谢谢 问题答案: 是一个类集群(请参阅《可可基础指南》中的“类集群”部分),这意味着实际的实现对您(API用户)是隐藏的。实际上,Foundation框架将在运行时根据数据量等选择适当的实现。此外,可以将任何一个作为键,而不仅是(当然,键对象的键必须是常量)。 因此,最

  • Objective-C是通用语言,它是在C语言编程语言之上开发的,它增加了Small Talk编程语言的功能,使Objective-C成为面向对象的语言。 它主要用于开发iOS和Mac OS X操作系统及其应用程序。 最初,Objective-C是由NeXT为其NeXTSTEP操作系统开发的,之后苹果公司使用它来开发iOS和Mac OS X,并接管了Objective-C。 1. 面向对象的编程

  • 本文向大家介绍简介Objective-C解析XML与JSON数据格式的方法,包括了简介Objective-C解析XML与JSON数据格式的方法的使用技巧和注意事项,需要的朋友参考一下 解析XML 本文以解析本地XML为例,网络获取到的返回值只需转换成NSData型,解析是同理 需要解析的xml文件如下,users.xml 我们用一个数组来存放,最终数据结构为 解析步骤 一、声明代理 NSXMLPa

  • 问题内容: 我正在研究Swift及其与Objective-C的区别。据我所知,Swift的当前版本相当快,甚至比Objective- C还快:请参见此处。 但是,由于大多数测试都是使用排序算法等完成的,所以我想知道,当Swift用于iOS应用开发时,它实际上是否会比Objective- C更快。任何人都可以(最好是从他们自己的经验中)启发我。 问题答案: 有一篇很棒的博客文章,特别是关于Swift

  • 本文向大家介绍Objective-C语言简单类别,包括了Objective-C语言简单类别的使用技巧和注意事项,需要的朋友参考一下 示例 NSArray上一个名为Filter的简单类别的接口和实现,具有用于过滤数字的单个方法。 优良作法是在方法中添加前缀(PF),以确保我们不会覆盖任何将来的NSArray方法。            

  • 问题内容: 我已经搜索过Swift书,但是找不到@synchronized的Swift版本。如何在Swift中进行互斥? 问题答案: 您可以使用GCD。它比更加冗长,但可以代替: