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. 使用cygwin出现syntax error near unexpected token'$'do\r

    直接从csdn复制粘贴的.sh代码,放到cygwin下运行sh的时候出错syntax error near unexpected token'$'do\r 解决方法: 1.下载notepad++ 2. ...

  2. mysql已有数据字符集转换

    下面模拟把latin1字符集的数据转换为utf8字符集 一.创建测试表和测试数据: 1.修改会话级别的连接字符集 mysql > set names latin1; 查看一下: 2.创建测试表: ...

  3. asp.net 之 数据库导入treeview

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  4. javaScript实现修改输入框之后标红

    <html> <title>实现标红</title> <script type="text/javascript">  functi ...

  5. U3D使anim,unity,prefab文件不显示乱码

    Edit-Project Setting-Editor-Asset Serialization-mode Force Text

  6. 至强CPU性能排行,从X3210起,由低至高排列。

    X3210X3220E5410E5506X5355X3320E5507X5365E5-2603E3-1220LE5-2403E5607X3330L5506X3230L5420E5-2407W3520E ...

  7. JavaScript的引擎机制

    var x=1; var y=0; var z=0; function add(n){n=n+1;return n;} y=add(x); function add(n){n=n+3;return n ...

  8. 使用servlet实现用户注册功能

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  9. 浅析C#深拷贝与浅拷贝

    1.深拷贝与浅拷贝   拷贝即是通常所说的复制(Copy)或克隆(Clone),对象的拷贝也就是从现有对象复制一个“一模一样”的新对象出来.虽然都是复制对象,但是不同的 复制方法,复制出来的新对象却并 ...

  10. 深入浅出设计模式——抽象工厂模式(Abstract Factory)

    模式动机在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法也具有唯一性,一般情况下,一个具体工厂中只有一个工厂方法或者一组重载的工厂方法.但是有时候我们需要一个工厂可 ...