您的位置:首页 > 产品设计 > UI/UE

黑马程序员——Foundation---NSSet,NSDictionary,NSNumber,NSDate,NSValue

2015-07-11 17:26 411 查看
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

NSSet

NSSet和NSArray的对比
 1>
共同点
 *
都是集合,都能存放多个OC对象
 *
只能存放OC对象,不能存放非OC对象类型(基本数据类型:int、char、float等,结构体,枚举)
 *
本身都不可变,都有一个可变的子类

 
 2>
不同点
 * NSArray有顺序,NSSet没有顺序

示例:
#import <Foundation/Foundation.h>

int main()
{
NSMutableSet *s = [NSMutableSet set];

// 添加元素
[s addObject:@"hack"];

// 删除元素
// [s removeObject:<#(id)#>];
return 0;
}

// set的基本使用
void test()
{
NSSet *s = [NSSet set];

NSSet *s2 = [NSSet setWithObjects:@"jack",@"rose", @"jack2",@"jack3",nil];

// 随机拿出一个元素
NSString *str = [s2 anyObject];

NSLog(@"%@", str);

//NSLog(@"%ld", s2.count);
}

NSDictionary

 集合
 1.NSArray\NSMutableArray
 *
有序
 *
快速创建(不可变):@[obj1, obj2, obj3]
 *
快速访问元素:数组名[i]

 
 2.NSSet\NSMutableSet
 *
无序

 
 3.NSDictionary\NSMutableDictionary
 *
无序
 *
快速创建(不可变):@{key1 : value1,  key2 : value2}
 *
快速访问元素:字典名[key]

 

示例:
#import <Foundation/Foundation.h>

int main()
{
NSArray *persons = @[
@{@"name" : @"jack", @"qq" : @"432423423", @"books": @[@"5分钟突破iOS编程", @"5分钟突破android编程"]},
@{@"name" : @"rose", @"qq" : @"767567"},
@{@"name" : @"jim", @"qq" : @"423423"},
@{@"name" : @"jake", @"qq" : @"123123213"}
];

//
// NSDictionary *jim = persons[2];

//
NSString *bookName = persons[0][@"books"][1];
NSLog(@"%@", bookName);
//NSArray *array = persons[0][@"books"];

//NSLog(@"%@", array);

// 先取出1位置对应的字典
// 再取出字典中qq这个key对应的数据
//NSLog(@"%@", persons[1][@"qq"]);

// NSLog(@"%@", jim);
return 0;
}

void use4()
{
// 字典不允许有相同的key,但允许有相同的value(Object)
// 字典的无序的
NSDictionary *dict = @{
@"address" : @"北京",
@"name" : @"jack",
@"name2" : @"jack",
@"name3" : @"jack",
@"qq" : @"7657567765"};

// NSArray *keys = [dict allKeys];
//
// for (int i = 0; i<dict.count; i++)
// {
// NSString *key = keys[i];
// NSString *object = dict[key];
//
//
// NSLog(@"%@ = %@", key, object);
// }

[dict enumerateKeysAndObjectsUsingBlock:
^(id key, id obj, BOOL *stop) {
NSLog(@"%@ - %@", key, obj);

// *stop = YES;
}];
}

void use3()
{
NSMutableDictionary *dict = @{@"name" : @"jack"};

[dict setObject:@"rose" forKey:@"name"];
}

void use2()
{
NSMutableDictionary *dict = [NSMutableDictionary dictionary];

// 添加键值对
[dict setObject:@"jack" forKey:@"name"];

[dict setObject:@"北京" forKey:@"address"];

[dict setObject:@"rose" forKey
4000
:@"name"];

// 移除键值对
// [dict removeObjectForKey:<#(id)#>];

NSString *str = dict[@"name"];

//NSLog(@"%@", str);

NSLog(@"%@", dict);

//NSLog(@"%@", @[@"jack", @"rose"]);
}

void use()
{
/*
字典:

key ----> value
索引 ----> 文字内容

里面存储的东西都是键值对

*/

// NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];

// NSArray *keys = @[@"name", @"address"];
// NSArray *objects = @[@"jack", @"北京"];

// NSDictionary *dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys];

/*
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
@"jack", @"name",
@"北京", @"address",
@"32423434", @"qq", nil];*/

NSDictionary *dict = @{@"name" : @"jack", @"address" : @"北京"};

// id obj = [dict objectForKey:@"name"];

id obj = dict[@"name"];

NSLog(@"%@", obj);

// 返回的是键值对的个数
NSLog(@"%ld", dict.count);
}



NSNumber

 将各种基本数据类型包装成NSNumber对象
    @10.5;
    @YES;
    @'A'; // NSNumber对象

    
    @"A"; // NSString对象
 将age变量包装成NSNumber对象
    int age = 100;
    @(age);

    

示例:
#import <Foundation/Foundation.h>

int main()
{
// @20 将 20包装成一个NSNumber对像

NSArray *array = @[

@{@"name" : @"jack", @"age" : @20},

@{@"name" : @"rose", @"age" : @25},

@{@"name" : @"jim", @"age" : @27}
];

// 将各种基本数据类型包装成NSNumber对象
@10.5;
@YES;
@'A'; // NSNumber对象

@"A"; // NSString对象

// 将age变量包装成NSNumber对象
int age = 100;
@(age);
//[NSNumber numberWithInt:age];

NSNumber *n = [NSNumber numberWithDouble:10.5];

int d = [n doubleValue];

int a = 20;

// @"20"
NSString *str = [NSString stringWithFormat:@"%d", a];
NSLog(@"%d", [str intValue]);

return 0;
}

void test()
{
NSNumber *num = [NSNumber numberWithInt:10];

NSDictionary *dict = @{
@"name" : @"jack",

@"age" : num

};

NSNumber *num2 = dict[@"age"];

int a = [num2 intValue];

NSLog(@"%d" , a);
}

运行结果:



NSDate

示例:

#import <Foundation/Foundation.h>

int main()
{
// 09/10/2011
NSString *time = @"2011/09/10 18:56";

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy/MM/dd HH:mm";

NSDate *date = [formatter dateFromString:time];
NSLog(@"%@", date);
return 0;
}

void date2string()
{
NSDate *date = [NSDate date];

// 日期格式化类
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

// y 年 M 月 d 日
// m 分 s 秒 H (24)时 h(12)时
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";

NSString *str = [formatter stringFromDate:date];

NSLog(@"%@", str);
}

void use()
{
// 创建一个时间对象
NSDate *date = [NSDate date];
// 打印出的时候是0时区的时间(北京-东8区)
NSLog(@"%@", date);

NSDate *date2 = [NSDate dateWithTimeInterval:5 sinceDate:date];

// 从1970开始走过的秒数
NSTimeInterval seconds = [date2 timeIntervalSince1970];

// [date2 timeIntervalSinceNow];
}

运行结果:



NSValue

NSNumber之所以能包装基本数据类型为对象,是因为继承了NSValue

示例:
#import <Foundation/Foundation.h>

int main()
{

// 结构体--->OC对象

CGPoint p = CGPointMake(10, 10);
// 将结构体转为Value对象
NSValue *value = [NSValue valueWithPoint:p];

// 将value转为对应的结构体
// [value pointValue];

NSArray *array = @[value ];

// insert code here...
// NSLog(@"这是哥修改过的东西6");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: