OC
一,字符串 1创建一个字符串
1) NSString *str2=[[NSString alloc]initWithString:str1];
2) NSString *string2=[[NSString alloc]initWithCString:"i am a man" encoding:NSUTF8StringEncoding];
3) NSString *string3=[[NSString alloc]initWithFormat:@"%@ %@",tempString];
是用类方法创建oc字符串(常用)
1) NSString *string5=[NSString stringWithString:tempSting];
2) NSString *string6=[NSString stringWithCString:"i am a man" encoding:NSUTF8StingEncoding];
3) NSString *string7=[NSString stringWithFormat:@"%@ %@",string5,string7];
2,字符串的拼接
1) NSString *catSting= [NSString stringWithFormat:@"%@,%@",string8,string9];
2) NSString *cat2Sting=[catSting stringByAppendingString:@"我来了"];
占位
NSString*str=[NSString stringWithFormat:@"%02d",i];
一共两位,空位由0占取
3,计算字符串长度
NSString *Str=@"SHABI";
NSInteger len =[ Str length];
4,判断字符串是否相等
BOOL isEqual=[str1 isEqualToString:str2];
5,字符串比较 //compare 返回值 为1,0,-1;
int i=[str1 compare str2];
不区分大小写的字符串比较
[str1 compare:str2 options:NSCaseInsensitiveSearch];
6,大小写转换
NSString *str2=[str1 uppercaseString];//小写转大写,执行一次操作,不改变原来的
NSString *str4=[str3 lowercaseString]; //大写转换小写
NSString *capstr=[str5 capitalizedString];//首字母转大写
7,字符串查找
NSString *str=@"我们都是大好人,大坏人,大好人";
NSRange range = [str rangeOfString:@"大坏人"]; //注意没有* 因为 NSRange有两个元素一 个是location,一个是length
if(range.location==NSNotFound)
{
NSLog(@"没找着");
}
8,判断前后缀
BOOL have=[str hasPrefix:@"1234567"]; //前
BOOL have2=[str hasSuffix:@"90"]; //后
9,字符串提取(截出来)
NSString *str1=@"123321234567";
1 NSString* str2 =[str1 substringToIndex:4]; //从头到哪
2 NSString *str3=[str1 substringFromIndex:3];//从3到最后
3 NSString *str4=[str1 substringWithRange:NSMakeRange(8,4)];//从下标开始 截一段
10,NSMutableString //在使用时候最好不要直接赋值(=@“”),因为这个是可变字符串,他的内容都是append进去的。
alloc创建
NSMutableString *str1=[[NSMutableString alloc]initWithCapacity:0];
类方法创建
NSMutableString *str2=[NSMutableString stringWithCapacity:0];
增 赋值
[str2 appendString:@"123"];
[str2 appendFormat:@"啊"];
[str2 insertString:@"我" atIndex:2];
删除
[str2 deleteCharactersInRange:NSMakeRange(2, 3)];
改
[str2 setString:@"abcdefg"];//全改
[str2 replaceCharactersInRange:NSMakeRange(3, 2) withString:@"doubi"]; //改部分
二,数组
NSArray创建:
NSArray *array=[[NSArray alloc]initWithObjects:@"123",@"456",nil];
NSArray *array2=[[NSArray alloc]initWithArray:array];
NSArray *array=[NSArray arrayWithObjects:@"i",@"k",@"f",nil];
NSArray *array1=[NSArray arrayWithArray:array];
获取数组的元素
NSArray *str1=[array1 objectAtIndex:0];
数组的长度
int len=[array count];
分割字符串
分割
NSArray *arr1=[s1 componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"年 月日:"]];
NSMutableArray
创建
NSMutableArray *s1=[NSMutableArray arrayWithCapacity:0];
增,向数组里添加新的对象
[s1 addObject:@"hello"];//向数组的最后一位依次增加
[s1 insertObject:@"my" atIndex:0];//向数组某一位增加
[s1 addObjectsFromArray:@[@"1",@"2"]];//增加多个
删
[s1 removeObjectAtIndex:0];//删除下标
[s1 removeLastObject]; //删除最后一位
[s1 removeAllObjects]; //删光
改
s1 replaceObjectAtIndex:0 withObject:@"are"];
交换
[arr1 exchangeObjectAtIndex:1 withObjectAtIndex:4];
三,字典部分
创建 alloc
NSDictionary *dic =[[NSDictionary alloc]initWithObjectsAndKeys:@"V1",@"K1", nil];
NSDictionary *dic1=[[NSDictionary alloc]initWithDictionary:dic];
NSDictionary *dic=[NSDictionary dictionaryWithObjectsAndKeys:@"v1",@"k1",nil];
找到对应key的value
NSString *str1 =[dic objectForKey:@"饮料"];
遍历字典的key
NSArray *str=[dic allKeys];
部分
创建
NSMutableDictionary *dic=[NSMutableDictionary dictionaryWithCapacity:0];
增
[dic setObject:@"china" forKey:@"country"];
删除
[dic removeObjectForKey:@"country"];// 删除key
[dic removeAllObjects];//全删
归档,把一个字典赋值给一个类
-(id)initPeopleWithDic:(NSDictionary *)dic
{
self = [super init];
if(self)
{
[self setValuesForKeysWithDictionary:dic];
}
return self;
}
-(void)setValue:(id)value forUndefinedKey:(NSString *)key
{
NSLog(@"出现异常的key%@",key);
}
四,单例的创建
#import "Sign.h"
//第一步 声明一个全局静态变量(这个类的对象)
static Sign *single=nil;
@implementation Sign
//第二步 实现+方法
+(id)shareInstance
{//第三步 做一个局部静态变量 是dispatch_once_t的类型的
static dispatch_once_t onceTaken;
//第四步 执行dispatch_once方法,第一个参数是上面的onceTaken的地址,第二个参数是这么写的^{},在大 括号里面实现全局静态变量的alloc方法,并在alloc方法后面加分号。
dispatch_once(&onceTaken,^{
single=[[Sign alloc]init];
single.isSign = @"yes";
});
//第五步 最后将静态全局变量return
return single;
五 NSData //数据类,用在本地缓存 ,网络请求,NSData就是一个二进制
NSData 与 NSstring 之间的转换。
(1) NSstring 转换成 NSData
NSString *str=@"我是一个中国人";
NSData *str2=[str dataUsingEncoding:NSUTF8StringEncoding];
(2) NSData 转换成 NSstring
NSString *str3=[[NSString alloc]initWithData:str2 encoding:NSUTF8StringEncoding];
NSData 与 NSArray 之间转换j
NSArray *arr=[NSArray arrayWithObjects:@"haha", nil];
NSData *arr1=[NSKeyedArchiver archivedDataWithRootObject:arr];
//NSArray转为NSData
NSArray *arr2=[NSKeyedUnarchiver unarchiveObjectWithData:arr1];
与 NSDictionary 之间转换
NSDictionary *dic=[NSDictionary dictionaryWithObjectsAndKeys:@"aa",@"ff" ,nil];
//创建一个可变Data
NSMutableData *data=[[NSMutableData alloc]init];
//把这个可变的Data 加入到一个归档中
NSKeyedArchiver *archiver=[[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
//在 archiver 里 定义一个 dic 的 标记
[archiver encodeObject:dic forKey:@"1"];
//归档结束
[archiver finishEncoding];
NSLog(@"%@",data);
//创建一个解归档对象,这个对象初始化 从一个Data 里面读取数据
NSKeyedUnarchiver *unArchiver=[[NSKeyedUnarchiver alloc] initForReadingWithData:data];
//转换,使用这个解归档对象把 这个data的 标记读出来
NSDictionary *backDic=[unArchiver decodeObjectForKey:@"1"];
//结束解归档
[unArchiver finishDecoding];
plist 文件最后可能是NSDictionary或者NSArray
NSDictionary * plistDic=[NSDictionary dictionaryWithContentsOfFile:文件位置];
NSArray *plistArray1=[NSArray arrayWithContentsOfFile:文件地址];
七,Json
Json 是个字符串 用在网络交互
解析
NSData *dataJson=[strJson dataUsingEncoding:NSUTF8StringEncoding];
NSArray *arrayJson=[NSJSONSerialization JSONObjectWithData:dataJson options:NSJSONReadingMutableLeaves error:nil];
八,NSDate
得到一个date
NSDate *date = [NSDate date];
//得到昨天的时间,也就是24小时之前的时间
NSDate *yesterdayDate = [NSDate dateWithTimeIntervalSinceNow:-(24*60*60)];
定义时间格式
NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"hh:mm:ss:SSS"];
//得到日历
//NSCalendar
//实例化一个日历对象,并初始化,初始化的时候要initWithCalendarIdentifier
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
//实例化一个日期的对象,这个对象不是NSDate的是NSDateComponents的
NSDateComponents *com = [[NSDateComponents alloc] init];
//做一个标示,表示我们要什么内容
NSInteger flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
//从一个日期里面把这些内容取出来
com = [calendar components:flags fromDate:date];
int week = [com weekday];
int year = [com year];
int month = [com month];
int day = [com day];
int hour = [com hour];
int min = [com minute];
int sec = [com second];
NSLog(@"时间是星期%d,年%d,月%d,ri%d,小时%d,分%d,秒%d",week,year,month,day,hour,min,sec);
//NSTimeInterval时间的间隔
//把一个字符串的时间,转为NSDate的时间格式
NSDate *tempDate = [[NSDate alloc] initWithString:@"2000-05-05 10:10:10 +0600"];
//上面的时间距某个时间的时间差
NSTimeInterval distance = [tempDate timeIntervalSinceNow];
//把时间差改为具体的日子
NSTimeInterval hereDate = distance/(86400*365);
NSLog(@"从现在开始到%@有多少%f",[tempDate description],hereDate);
NSDate *startDate = [[NSDate alloc] init];
NSDate *toDate = [[NSDate alloc] initWithString:@"2013-05-05 10:10:10 +0600"];
NSCalendar *hereCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
//components: fromDate: toDate: options:
NSDateComponents *hereCom = [hereCalendar components:flags fromDate:startDate toDate:toDate options:0];
int hereHour = [hereCom hour];
int hereMin = [hereCom minute];
int hereSec = [hereCom second];
int hereDay = [hereCom day];
int herMonth = [hereCom month];
int hereYear = [hereCom year];
NSLog(@"从现在开始到%@,差了%d年,%d月,%d日,%d小时,%d分,%d秒",[toDate description],hereYear,herMonth,hereDay,hereHour,hereMin,hereSec);
OC的更多相关文章
- iOS代码规范(OC和Swift)
下面说下iOS的代码规范问题,如果大家觉得还不错,可以直接用到项目中,有不同意见 可以在下面讨论下. 相信很多人工作中最烦的就是代码不规范,命名不规范,曾经见过一个VC里有3个按钮被命名为button ...
- 用C语言封装OC对象(耐心阅读,非常重要)
用C语言封装OC对象(耐心阅读,非常重要) 本文的主要内容来自这里 前言 做iOS开发的朋友,对OC肯定非常了解,那么大家有没有想过OC中NSInteger,NSObject,NSString这些对象 ...
- 嵌入式&iOS:回调函数(C)与block(OC)传 参/函数 对比
C的回调函数: callBack.h 1).声明一个doSomeThingCount函数,参数为一个(无返回值,1个int参数的)函数. void DSTCount(void(*CallBack)(i ...
- 嵌入式&iOS:回调函数(C)与block(OC)回调对比
学了OC的block,再写C的回调函数有点别扭,对比下区别,回忆记录下. C的回调函数: callBack.h 1).定义一个回调函数的参数数量.类型. typedef void (*CallBack ...
- WebViewJavascriptBridge源码探究--看OC和JS交互过程
今天把实现OC代码和JS代码交互的第三方库WebViewJavascriptBridge源码看了下,oc调用js方法我们是知道的,系统提供了stringByEvaluatingJavaScriptFr ...
- OC泛型
OC泛型 泛型是程序设计语言的一种特性,他主要是为了限制类型的,比如OC中的数组,你可以限制他里面装的是NSString类型,泛型的话JAVA和C++都有的,大家要是对泛型不了解的话可以去百度一下. ...
- iOS学习15之OC集合
1.数组类 1> 回顾C语言数组 数组是一个有序的集合, 来存储相同数据类型的元素. 通过下标访问数组中的元素,下标从 0 开始. 2> 数组 数组是一个有序的集合,OC中的数组只能存储对 ...
- JS 与OC 交互篇
完美记录交互 CSDN博客: (OC调用JS) http://blog.csdn.net/lwjok2007/article/details/47058101 (JS调用OC) http://blog ...
- OC中加载html5调用html方法和修改HTML5内容
1.利用webView控件加载本地html5或者网络上html5 2.设置控制器为webView的代理,遵守协议 3.实现代理方法webViewDidFinishLoad: 4.在代理方法中进行操作H ...
- iOS开发--JS调用原生OC篇
JS调用原生OC篇 方式一(反正我不用) 第一种方式是用JS发起一个假的URL请求,然后利用UIWebView的代理方法拦截这次请求,然后再做相应的处理. 我写了一个简单的HTML网页和一个btn点击 ...
随机推荐
- css的背景background的相关属性
今天需要做一个占满设备宽度的轮播图,这里作为demo仅展示一张图,下面分别是要操作的图片(这里做了缩放处理,实际的图比较大),以及要实现的效果图,很明显两者是不成比例的: (图一) ...
- 【CSS】盒子模型 之 IE 与W3C的盒子模型对比
摘要 主要看这两种盒子模型的优缺点及适用场景 一.区别 标准 W3C 盒子模型的 content 部分不包含其他部分. IE 盒子模型的 content 部分包含了 border 和 padding. ...
- Cinnamon桌面是怎么回事儿
(linux mint 18.2 用户截图) Cinnamon的由来 在GNOME 3之前,GNOME是根据传统的桌面比拟(Desktop metaphor)而设计,到了GNOME 3便被GNOME ...
- Java之IO流补充
IO流例子 package com.hanqi.maya.util; import java.io.BufferedReader; import java.io.BufferedWriter; imp ...
- 移动端touch事件封装
<meta charset="utf-8"><meta name="viewport" content="width=device- ...
- Bean 的生命周期 之 后处理Bean
这里先把Bean 的生命周期总结一下,然后引出后处理Bean 首先,Bean 的生命周期总共有11步: 1.instantiate bean对象实例化 2.populate properties 封装 ...
- 双向循环链表(C语言描述)(三)
代码清单 // linkedlist.h #ifndef __LINKEDLIST_H__ #define __LINKEDLIST_H__ #include <assert.h> #in ...
- Uva 548 二叉树的递归遍历lrj 白书p155
直接上代码... (另外也可以在递归的时候统计最优解,不过程序稍微复杂一点) #include <iostream> #include <string> #include &l ...
- 一份关于webpack2和模块打包的新手指南
webpack已成为现代Web开发中最重要的工具之一.它是一个用于JavaScript的模块打包工具,但是它也可以转换所有的前端资源,例如HTML和CSS,甚至是图片.它可以让你更好地控制应用程序所产 ...
- Vue模板内容
前面的话 如果只使用Vue最基础的声明式渲染的功能,则完全可以把Vue当做一个模板引擎来使用.本文将详细介绍Vue模板内容 概述 Vue.js使用了基于HTML的模板语法,允许声明式地将DOM绑定至底 ...