1,字符串

字符串的创建:两种常用初始化方式

NSString *str=[[NSString alloc]initWithFormat:@"i am a boy"];

NSString *str1=[NSString stringWithFormat:@"i am a boy"];

NSString *str2=@"i am a good boy";

字符串的操作:

字符串的截取

strMax=[str2 substringToIndex:5];

strMax=[str2 substringFromIndex:3];

strMax=[str2 substringWithRange:NSMakeRange(2, 4)];

获取字符串长度

NSLog(@"%lu",[strMax length]);

获取某段字符串在字符串的位置及其长度:用点语法

NSRange range=[str rangeOfString:@"boy"];

NSLog(@"字符串位置:%ld  字符串长度: %ld",range.location,range.length);

分割字符串

NSMutableArray *arry=[str componentsSeparatedByString:@""];

字符串的拼接

strMax=[str1 stringByAppendingString:str2];

可变字符串(NSMutableString)NSMutableString *str=[[NSMutableString alloc]initWithFormat:@"i am a boy"];

增加三种方法:插入 删除 替换

[str insertString:@"spider-man" atIndex:2];

[str deleteCharactersInRange:NSMakeRange(2, 5)];

[str replaceCharactersInRange:NSMakeRange(3, 8) withString:@"iron-men"];

2,数组

数组的初始化

字符串的操作

取某下标元素

NSString *str=[arr objectAtIndex:0];

数组容量

NSInteger count=[arr count];

取某元素下标

NSUInteger index=[arr indexOfObject:@"e"];

判断是否包含某种元素,返回bool值

BOOL is=[arr containsObject:@"key"];

可变数组(NSMutableArray)

替换某个数组中内容

[array replaceObjectAtIndex:0 withObject:@"petter"]; 
交换两个下标元素内容
[array exchangeObjectAtIndex:2 withObjectAtIndex:5]; 
将另一个数组内容添加到这个数组内
[array addObjectsFromArray:array1]; 
删除元素

[array removeObjectAtIndex:0];

[array removeObject:@"bat-man"];
删除所有元素

[array removeAllObjects]; 

遍历数组(两种方法  for 循环 和 for in)

3,字典

创建字典并用数组作为对象对其进行初始化

NSArray *array = [NSArray arrayWithObjects:@"iron-men",@"tony",@"captain", @"setef",nil];

NSMutableDictionary *dic=[[NSMutableDictionary alloc]initWithObjectsAndKeys:array,@"superhero", nil];

向字典中添加元素

[dic setObject:@"petter" forKey:@"spider-men"];

删除字典中的key

[dic removeObjectForKey:@"spider-men"];

遍历字典

方法一:快速遍历

for (id key in dic) {

id value=[dic objectForKey:key];

NSLog(@"%@",value);

}

方法二,先取出再输出

NSArray *key=[dic allKeys];

for (int i=0;i<[key count];i++){

id key1=[key objectAtIndex:i];

id value=[dic objectForKey:key1];

NSLog(@"%@",value);

}

4,集合NSSet

要点:NSSet元素是无序的 ,且没有重复

两种初始化方法

NSSet *setOne=[[NSSet alloc]initWithObjects:@"1",@"2",@"34",@"45", nil];

NSSet *setTwo=[NSSet setWithObjects:@"1",@"678",@"4536",@"4", nil];

直接转数组

NSMutableArray *arr=[[NSMutableArray alloc]initWithObjects:[setOne allObjects],nil];

随机取出任意元素

[setOne anyObject];

判断集合中是否存在某元素,返回bool值

BOOL is=[setTwo containsObject:@"3333"];

增加集合中的元素,by对象 by集合 by数组

[setTwo setByAddingObject:@"yy"];

[setTwo setByAddingObjectsFromSet:setOne];

[setTwo setByAddingObjectsFromArray:arr];

集合间的数学操作:减集,交集,并集(都是对可变集合而言NSMutableSet)

[setTwo minusSet:setOne];

[setTwo intersectSet:setOne];

[setTwo unionSet:setTwo];

5,NSNumber和  NSValue

NSNumber和  NSValue 都是包装类,其中NSValue是NSNumber的父类,他们用于包装一些int, folat ,long ,char,short等基本数据类型

通过包装就可以将基本数据类型添加到NSArry和NSSet等(要求元素必须是对象)中

NSNumber *n1=[NSNumber numberWithInt:23];

NSNumber *n2=[NSNumber numberWithFloat:5.6f];

[arr addObject:n1];

[arr addObject:n2];

6,日期

获取当前时间

NSDate *date1=[NSDate date];

从现在起一天后的日期

NSDate *date2=[[NSDate alloc]initWithTimeIntervalSinceNow:3600*24];

从现在起一天前的日期

NSDate *date2=[[NSDate alloc]initWithTimeIntervalSinceNow:-3600*24];

获取当前时区的标准时间

NSDate *date1=[NSDate date];

NSLocale *cn=[NSLocale currentLocale];

NSLog(@"%@",[date1 descriptionWithLocale:cn]);

输出格式如下

2016-08-02 22:02:07.861 review[24866:1504438] 201682星期二中国标准时间 22:02:07

获取两个日期之间较早的日期

NSDate *earlier=[date2 earlierDate:date3];

获取两个日期之间晚的日期

NSDate *earlier=[date2 laterDate:date3];

两个日期的秒差

[earlier timeIntervalSinceDate:date3];

[earlier timeIntervalSinceNow];

两个日期间的比较,返回bool值

日期格式器(NSDateFormatter)

自定义输出格式

NSDateFormatter *format=[[NSDateFormatter alloc]init];

[format setDateFormat:@"yyyy-MM-dd-HH-mm"];

NSLog(@"%@",[format stringFromDate:date1]);

系统自带风格

[format setDateStyle:NSDateFormatterNoStyle];

[format setDateStyle:NSDateFormatterShortStyle];

[format setDateStyle:NSDateIntervalFormatterLongStyle];

[format setDateStyle:NSDateIntervalFormatterMediumStyle];

日历(NSCalendar)和日期组件(NSDateComponents)

获取代表公历的NSCalendar对象

NSCalendar *gregorian=[[NSCalendar alloc]initWithCalendarIdentifier:NSCalendarIdentifierGregorian];

定时器(NStimer)

设定一个定时器

NSInteger _count;

NSTimer* _timer;

- (void) info:(NSTimer*)timer{

NSLog(@"正在执行第%ld次任务",_count++);

if (_count>10) {

NSLog(@"取消执行定时器");

[_timer invalidate];

}

_timer=[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(info:) userInfo:nil repeats:YES];

}

OC之0801的更多相关文章

  1. iOS代码规范(OC和Swift)

    下面说下iOS的代码规范问题,如果大家觉得还不错,可以直接用到项目中,有不同意见 可以在下面讨论下. 相信很多人工作中最烦的就是代码不规范,命名不规范,曾经见过一个VC里有3个按钮被命名为button ...

  2. 用C语言封装OC对象(耐心阅读,非常重要)

    用C语言封装OC对象(耐心阅读,非常重要) 本文的主要内容来自这里 前言 做iOS开发的朋友,对OC肯定非常了解,那么大家有没有想过OC中NSInteger,NSObject,NSString这些对象 ...

  3. 嵌入式&iOS:回调函数(C)与block(OC)传 参/函数 对比

    C的回调函数: callBack.h 1).声明一个doSomeThingCount函数,参数为一个(无返回值,1个int参数的)函数. void DSTCount(void(*CallBack)(i ...

  4. 嵌入式&iOS:回调函数(C)与block(OC)回调对比

    学了OC的block,再写C的回调函数有点别扭,对比下区别,回忆记录下. C的回调函数: callBack.h 1).定义一个回调函数的参数数量.类型. typedef void (*CallBack ...

  5. WebViewJavascriptBridge源码探究--看OC和JS交互过程

    今天把实现OC代码和JS代码交互的第三方库WebViewJavascriptBridge源码看了下,oc调用js方法我们是知道的,系统提供了stringByEvaluatingJavaScriptFr ...

  6. OC泛型

    OC泛型 泛型是程序设计语言的一种特性,他主要是为了限制类型的,比如OC中的数组,你可以限制他里面装的是NSString类型,泛型的话JAVA和C++都有的,大家要是对泛型不了解的话可以去百度一下. ...

  7. iOS学习15之OC集合

    1.数组类 1> 回顾C语言数组 数组是一个有序的集合, 来存储相同数据类型的元素. 通过下标访问数组中的元素,下标从 0 开始. 2> 数组 数组是一个有序的集合,OC中的数组只能存储对 ...

  8. JS 与OC 交互篇

    完美记录交互 CSDN博客: (OC调用JS) http://blog.csdn.net/lwjok2007/article/details/47058101 (JS调用OC) http://blog ...

  9. OC中加载html5调用html方法和修改HTML5内容

    1.利用webView控件加载本地html5或者网络上html5 2.设置控制器为webView的代理,遵守协议 3.实现代理方法webViewDidFinishLoad: 4.在代理方法中进行操作H ...

随机推荐

  1. SQL递归查询(with cte as)

    with cte as ( select Id,Pid,DeptName,0 as lvl from Department where Id = 2 union all select d.Id,d.P ...

  2. MVC5+EF6 入门完整教程11--细说MVC中仓储模式的应用

    摘要: 第一阶段1~10篇已经覆盖了MVC开发必要的基本知识. 第二阶段11-20篇将会侧重于专题的讲解,一篇文章解决一个实际问题. 根据园友的反馈, 本篇文章将会先对呼声最高的仓储模式进行讲解. 文 ...

  3. hdu 5780 gcd

    题意:给定$x, n$满足$1 \leq x, n \leq 1000000$,求$\sum{(x^a-1,x^b-1)}$对$1e9+7$取模后的值,其中$1 \leq a, b \leq n$. ...

  4. 2015弱校联盟(1) - E. Rectangle

    E. Rectangle Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO format: %lld Java class name ...

  5. Poj(1251),Prim字符的最小生成树

    题目链接:http://poj.org/problem?id=1251 字符用%s好了,方便一点. #include <stdio.h> #include <string.h> ...

  6. Auty自动化测试框架第五篇——框架内部的调用支持、自动化安装库与配置说明

    [本文出自天外归云的博客园] 本次对Auty自动化测试框架做些收尾工作,由于在scripts文件夹中的脚本会需要调用其他包结构文件夹中的脚本,所以这里需要添加一下框架对于内部脚本间互相调用的支持,这里 ...

  7. radius服务器搭建

    yum install -y unzip gcc-c++ cd /opt unzip release-stable.zip mv ToughRADIUS-release-stable toughrad ...

  8. Fiddler—PC上实现手机的抓包

    PC上安装Fiddler之后,可以抓取各种浏览器的请求,通过一些设置可以获取iPhone.安卓手机.windows phone的请求.具体的工作原理我也不多说(哼,绝对不是因为我不懂XD),主要说下如 ...

  9. [问题2014A08] 复旦高等代数 I(14级)每周一题(第十教学周)

    [问题2014A08]  设 \(A=(a_{ij})\) 为数域 \(\mathbb{K}\) 上的 \(n\) 阶方阵, 定义函数 \[f(A)=\sum_{i,j=1}^na_{ij}^2.\] ...

  10. [问题2014S01] 复旦高等代数II(13级)每周一题(第一教学周)

    问题2014S01  设 \(f(x_1,x_2,\cdots,x_n)\) 是次数等于 2 的 \(n\) 元实系数多项式, \(S\) 是使得 \(f(x_1,x_2,\cdots,x_n)\) ...