iOS:常用属性、方法
前言:一段时间没接触,很容易就忘记以前的知识。专写一篇,供几个月没接触,拿起却忘记了。
0、宏定义、系统相关
0-1)、宏定义、规范
变量:
//全局变量通常用小写g来提示
int gNumb=0; //宏定义通常用小写k来提示,也不一定全是
#define kMaxValue(value1,value2) ( value1>value2 ? value1 : value2 )
0-2)、系统相关
//重写父类的方法,如TableViewCell 和 按钮等本身有些View
-(void)layoutSubviews
{
[super layoutSubviews];
}
//自带set 和 get 方法
@property (nonatomic,strong) NSArray *myArr; //重写属性(如MVC,给cell模型,数据就刷上View)
- (void)setLabelString:(NSString *)labelString
{
_labelString = labelString;
self.labelView.text = labelString;
} //懒加载 : 用这个数组的时候才去加载它!加载完之后,不在加载!(也相当于重写上面的get方法)
-(NSArray *)myArr
{
if (_myArr==nil) {
_myArr = ;
}
return _myArr;
}
//获取本地path
NSString *path = [[NSBundle mainBundle]pathForResource:@"xxx" ofType:@"mp3"];
//url连接地址
NSURL *url = [NSURL fileURLWithPath:path];
//字体样式
NSArray * array = [UIFont familyNames];
//每个样式的子样式
NSArray * subfontArr = [UIFont fontNamesForFamilyName:array[0]]; //字体粗体
UIFont *font = [UIFont boldSystemFontOfSize:20.0];
//添加观察者
[self.phone addObserver:self forKeyPath:@"price" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil]; //观察到变化控制
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context {
NSNumber *num = [change objectForKey:@"new"];
NSLog(@"%@",num);
} //移除观察者
-(void)dealloc
{
// [self removeObserver:self forKeyPath:@"xxx"];
[[NSNotificationCenter defaultCenter]removeObserver:self];
}
//发送通知
[[NSNotificationCenter defaultCenter]postNotificationName:@"pricechange" object:self userInfo:nil]; //添加观察者 观察通知
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(salephone:) name:@"pricechange" object:nil]; //接受到通知做控制
-(void)salephone:(NSNotification*)noti
{
noti.object
} //移除观察者
-(void)dealloc
{
// [self removeObserver:self forKeyPath:@"xxx"];
[[NSNotificationCenter defaultCenter]removeObserver:self];
}
//回调、Block //声明
int (^myBlock) (int a,int b);
//实现(赋值)
myBlock = ^(int a, int b){
return a+b;
}; //声明和实现放在一块
int (^myBlock) (int a,int b) = ^(int a, int b){
return a+b;
}; //调用
int result = myBlock(5,6);
NSLog(@"%d",result); //直接给函数参数设回调类型(block参数相同即可,如可传 加、减、乘、除 不同操作的block进来)
-(void)test:(int(^)(int a,int b))myBlock
{
int res = myBlock(10,10);
} //调用,不同上面,这里需要自己实现block的操作,如在a+b、a-b、a*b、a/b等操作
[self test:^int(int a, int b) { }]; [self test:myBlock]; //加__block才能影响到里面
__block int num; //定义一个回调类型,无返回值,一个参数button
typedef void(^ButtonBlock)(UIButton *button);
//谓词
NSArray *DATA_A =@[类,类,类,类,类]; //设置过滤条件
NSPredicate *newpre = [NSPredicate predicateWithFormat:@"age > 29"]; @"name BEGINSWITH 'x' "
@"name ENDSWITH 'x' "
@"name CONTAINS 'x' "
@"age > 29 || age < 20"
@"name like '?d*' " //过滤后保存的数组
NSArray *newarray = [DATA_A filteredArrayUsingPredicate:newpre];
//KeyPath @"dogs.@sum.weight"
@"dogs.@avg.weight"
@"dogs.@min.weight"
@"dogs.@max.weight" [array valueForKeyPath:@"@sum.floatValue"];
[array valueForKeyPath:@"@avg.floatValue"];
[array valueForKeyPath:@"@max.floatValue"];
[array valueForKeyPath:@"@min.floatValue"];
1、View
1-1)View的属性
//中心点,设置中心点,就不用设置X、Y
view.center
//bounds 以自身为坐标系,改变是以中心为原点改变。
view.bounds = CGRectMake(0, 0, 20, 20);//只能修改大小
//frame 以父视图
view.frame = CGRectMake(100, 100, 200, 200);
//背景颜色
view.backgroundColor
//标签
view.tag
//视图交互,可能会挡住下面的视图
view.userinteractionenabled
//父视图
view.superview
//超过父视图就剪切掉
view.clipstobounds
//透明
view.alpha
//隐藏
view.hidden //旋转一圈
view.transform = CGAffineTransformRotate(view.transform, M_PI);
//宽放大1.5倍,高放大1.5倍,
view.transform = CGAffineTransformScale(view.transform, 1.5, 1.5);
1-2)View的layer
//设置圆角
[view.layer setCornerRadius:100]; //设置边框
[view.layer setBorderWidth:2.0];
//设置边框的颜色
[view.layer setBorderColor:[[UIColor grayColor] CGColor]]; // 设置阴影不能 masksToBounds !!!
//设置阴影透明度
[view.layer setShadowOpacity:1.0];
//设置阴影偏移,宽2,高5
[view.layer setShadowOffset:CGSizeMake(2, 5)];
//设置颜色
[view.layer setShadowColor:[[UIColor grayColor] CGColor]]; PS:
//超过父视图,自动剪裁(UIImageView 和UILabel 等一些控件,需要加这句才能setCorn!)
[label.layer setMasksToBounds:YES];
1-3)View的方法
//把子视图View移到最前面
[self.view bringSubviewToFront:view];
//把子视图移到最下层
[self.view sendSubviewToBack:view2];
//插入
[self.view insertSubview:view2 atIndex:1];
[self.view insertSubview:view2 aboveSubview:view1];
[self.view insertSubview:view2 belowSubview:view1];
//所有的子视图
NSArray *array= [self.view subviews];
//视图移除
[view removeFromSuperview];
//根据标签取View,宏定义
[view viewWithTag:1000];
2、UILabel
2-1)UILabel的属性
//内容
label.text
//字体
label.font = [UIFont systemFontOfSize:fontSize]; //系统
label.font = [UIFont fontWithName:@"Times New Roman" size:fontSize]; //Times New Roman体
label.font = [UIFont italicSystemFontOfSize:fontSize]; //斜体
label.font = [UIFont boldSystemFontOfSize:fontSize]; //粗体
//字体默认左对齐
label.textAlignment = NSTextAlignmentLeft;
//换行
label.numberOfLines = 0;
//缺省模式,换行保证一个完整的单词
label.lineBreakMode = NSLineBreakByWordWrapping; //高亮模式
label.highlighted = YES;
//高亮模式的字体颜色
label.highlightedTextColor = [UIColor redColor]; //阴影颜色
label.shadowColor = [UIColor greenColor];
//阴影偏移量,宽偏移5,高偏移5
label.shadowOffset = CGSizeMake(5, 5);
3、UIButton
3-1)UIButton的属性
//按钮失能
btn.enabled = NO;
//按钮选中
btn.selected = YES;
3-2)UIButton的方法
//按钮创建的类方法
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
//按钮是否选中状态
[button isSelected]; //设置不同状态下的【标题】,有正常、选中、失能等
[btn setTitle:@"点击" forState:UIControlStateNormal];
//设置不同状态下的【标题颜色】,有正常、选中、失能等
[btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
//设置不同状态下的【图片】,有正常、选中、失能等
[btn setImage:[UIImage imageNamed:@"correct"] forState:UIControlStateNormal];
//设置不同状态下的【背景图片】,有正常、选中、失能等
[btn setBackgroundImage:[UIImage imageNamed:@"1"] forState:UIControlStateNormal]; //按钮当前【标题】(获取用于切换视图,传值等用途)
NSString *titlenormal = [btn titleForState:UIControlStateNormal];
//按钮当前【图片】(获取用于切换视图,传Image等用途)
[btn currentImage]
//按钮当前【背景图片】(获取用于切换视图,传Image等用途)
[btn currentBackgroundImage] //微调标题的位置(既然要调整,感觉还是用layout吧!)
[btn setTitleEdgeInsets:UIEdgeInsetsMake(20, -20, 0, 0)]; //按钮添加触摸事件
[btn addTarget:self action:@selector(clickAction:) forControlEvents:UIControlEventTouchUpInside];
//实现方法
-(void)clickAction:(UIButton*)button
{
NSLog(@"点击了");
}
4、UITextField
4-1)UITextField的属性
//清除模式是否一直显示
tfView.clearButtonMode = UITextFieldViewModeAlways;
//自制清除模式,如密码显示与否,小眼睛
tfView.rightView = view;
tfView.rightViewMode = UITextFieldViewModeAlways;
//自制特定的键盘,如银行账号登录,
tfView.inputView = view;
tfView.inputAccessoryView = view;
//键盘类型,如电话号码,不让输字母
tfView.keyboardType = UIKeyboardTypeDefault;
//键盘的颜色
tfView.keyboardAppearance = UIKeyboardAppearanceDark;
//边界风格
tfView.borderStyle = UITextBorderStyleRoundedRect;
//内容
tfView.text = @"0";
4-2)UITextField的方法
//第一响应,切换视图后自动跳出
[tfView becomeFirstResponder]; (View的方法)
//结束编辑,如输入完成,点击其他地方,按键自动缩回
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[self.view endEditing:YES];
}
4、导航栏
4-1)、导航栏
//隐藏navigationBar(它推过的所有的VC共用这个Bar)
self.navigationController.navigationBarHidden=YES;
[self.navigationController.navigationBar setHidden:YES];
//加载提示,原生,用得少
self.navigationItem.prompt = @"加载中...";
//系统的BarButton
UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:nil];
//设置左边BarButton
self.navigationItem.leftBarButtonItems = @[left_Item1,backItem];
self.navigationItem.leftBarButtonItem = backItem;
//设置右边BarButton
self.navigationItem.rightBarButtonItem = self.editButtonItem;
//navigationBar的背景颜色
self.navigationController.navigationBar.backgroundColor = [UIColor greenColor];
//代理,VC将要出现,VC出现
self.navigationController.delegate = self;
//当前显示的VC
self.navigationController.visibleViewController;
//某个导航栏里的顶层VC
self.navigationController.topViewController; //创建
UINavigationController *navi = [[UINavigationController alloc]initWithRootViewController:rootVC];
//推出新的视图,返回用POP,只有Controller才能推。View推不了
[self.navigationController pushViewController:root animated:YES];
//返回,Pop
[self.navigationController popToRootViewControllerAnimated:YES];
//navigation 推过的所有VC
NSArray *vcArray = [self.navigationController viewControllers];
//返回到指定的VC
[self.navigationController popToViewController:vcArray[1] animated:YES];
//navigationBar的背景图片
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"image1"] forBarMetrics:UIBarMetricsDefault]; (其他)
//设置了title,会自动变成navigationBar的名字
self.title = @"表视图控制器”;
4-2)、工具栏ToolBar
//自定义工具栏
UIToolbar *toolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, WITDH, 44)];
//覆盖
[self.navigationController.toolbar addSubview:toolbar];
//隐藏
self.navigationController.toolbarHidden = NO; //填充空的地方
//Flexible 灵活,柔韧,有弹性
UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
//固定间距
UIBarButtonItem *fixedSpace = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:self action:nil];
fixspace.width =120.0;
//设置工具栏的BarButton
toolbar.items = @[item1,fixspace,item2,fixspace,item3,fixspace,item4];
5、分栏
//分栏子控制器(主页VC)
MainViewController *mainCtr = [[MainViewController alloc]init];
//设置 title 后,会在 分栏、导航栏 显示
mainCtr.title = @"第一界面";
//分栏子控制器,在分栏显示的item,有自己的title,不再和导航栏共用
UITabBarItem *mainItem = [[UITabBarItem alloc]initWithTitle:@"首页" image:[UIImage imageNamed:@"tabbar_home"] selectedImage:[UIImage imageNamed:@"tabbar_home_selected"]];
//覆盖上去
mainCtr.tabBarItem = mainItem; //创建分栏控制器
UITabBarController *tabBarCtr = [[UITabBarController alloc]init];
//设置子控制器
[tabBarCtr setViewControllers:@[mainCtr,shopCtr,mydetailCtr,aboutCtr,moreCtr]];
//把分栏控制器放到rootVC显示,类似的还有导航栏
self.window.rootViewController = tabBarCtr; //选中的渲染颜色
tabBarCtr.tabBar.tintColor = [UIColor cyanColor];
//分栏的背景颜色
tabBarCtr.tabBar.barTintColor = [UIColor blackColor];
//tabbar样式
tabBarCtr.tabBar.barStyle = UIBarStyleDefault ;
//设置字体大小,样式(+appearance,改变全局属性)
[[UITabBarItem appearance] setTitleTextAttributes:@{NSFontAttributeName:[UIFont boldSystemFontOfSize:13]} forState:UIControlStateNormal];
//大的背景图片
tabBarCtr.tabBar.backgroundImage = [UIImage imageNamed:@"image3"];
//选中的背景图片
tabBarCtr.tabBar.selectionIndicatorImage = [UIImage imageNamed:@"menu_tab_bak"];
//根据Index切换分栏,可以自制分栏控制器(self.tabBar.hidden)或是 中间大圆形按钮 等用途
self.selectedIndex
//超过五个界面 可以拖拽调整! //分栏子控制器的子视图(分栏->主页->主页详情)
mainDetailViewController *mainDetail = [[mainDetailViewController alloc] init];
//当推出视图时隐藏分栏控制器
mainDetail.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:mainDetail animated:YES];
5、UIScrollView
5-1)、UIScrollView的属性
//可滑动的总宽、高
scrollView.contentSize = CGSizeMake(WIDTH*self.imgArr.count, 0);
//自动分页
scrollView.pagingEnabled = YES;
//反弹效果
scrollView.bounces = NO;
//代理(基本要,监测滑动减速、停止)
scrollView.delegate = self;
//锁定方向,不能斜着拉
scrollView.directionalLockEnabled = NO;
//当前偏移(可以用来设置偏移量,让scrollView滚动)
scrollView.contentOffset
//横向条显示
scroll.showsHorizontalScrollIndicator = NO;
//竖向条显示
scroll.showsVerticalScrollIndicator = YES;
//滚动使能
scroll.scrollEnabled = NO;
//滚动条颜色
scroll.indicatorStyle = UIScrollViewIndicatorStyleWhite;
//内边距(可做 划过导航栏半透明的效果、显示到底了、下拉加载功能)
scroll.contentInset = UIEdgeInsetsMake(50, 0, 0, 0);
//拖动条内边距
scroll.scrollIndicatorInsets = UIEdgeInsetsMake(50, 0, 0, 0);
5-2)、UIScrollView的方法
//有动画效果的滑动
[scroll setContentOffset:CGPointMake(WIDTH, 0) animated:YES]; //代理,滑动减速(其实,这里可以直接和属性判断,下面只能区别TableView和scrollView)
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
if ([scrollView isMemberOfClass:[UIScrollView class]]) {
_pageCtr.currentPage = scrollView.contentOffset.x/WIDTH;
}
}
6、表视图
6-1)、table的属性
//表头(只有一个,组头有多个)
tableView.tableHeaderView = view;
//行高,默认是44
tableView.rowHeight = 100.0;
//分割线风格
tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
//分割线颜色
tableView.separatorColor = [UIColor redColor];
6-2)、table的方法
//重载(更新数据源后,需要重载)
[tableView reloadData];
6-3)、cell的属性
//内容
cell.textLabel.text = @"xxx";
//详细内容
cell.detailTextLabel.text = @"xxx";
//图片,png可以没后缀,jpg一定要有,严谨起见,最后连png也写出来吧!
cell.imageView.image = [UIImage imageNamed:@"xxx"];
//点击不会有灰色的
cell.selectionStyle = UITableViewCellSelectionStyleNone;
//右边的箭号
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
//自定义右边的View,最常见的情况是个箭号,表示加载更多
cell.accessoryView = view;
//注意,一般添加用contentView,和Cell直接添加有点区别
[cell.contentView addSubview:view]; (这里是UILabel的属性)
//不限行 = 自动换行,
cell.textLabel.numberOfLines = 0;
//字体样式、大小设置,
cell.textLabel.font (其他相关)
indexPath.row
indexpath.section
6-4)、cell的自定义
6-4-1)、cell的重写父类方法
-(void)layoutSubviews
{ [super layoutSubviews]; self.imageView.frame =; self.titleLabel.frame = ; self.titleLabel.textAlignment = NSTextAlignmentCenter;
}
6-4-2)、cell的重写 initWithFrame: reuseIdentifier:
7、UIPageControl
7-1)、UIPageControl的属性
//多少页(小圆点)
_pageCtr.numberOfPages
//当前页
_pageCtr.currentPage
//小圆点的颜色
_pageCtr.pageIndicatorTintColor = [UIColor redColor];
//当前选中的小圆点的颜色
_pageCtr.currentPageIndicatorTintColor = [UIColor blueColor]; //注意!如果加在scrollView上,会跟着移没掉,要和scrollView同一个父级,初级错误。
[self.view addSubview:_pageCtr];
7-2)、UIPageControl的方法
//注意:page变化不是通过代理,而是和按钮一样:事件。
[page addTarget:self action:@selector(choosePage:) forControlEvents:UIControlEventValueChanged]; //可以通过page切换相应的界面
-(void)choosePage:(UIPageControl*)page
{
NSLog(@"%ld",page.currentPage);
}
7-3)、与scrollView连用,需要根据scroll的滑动,更新page的小圆点
参照“5-2)、UIScrollView的方法”
7、警告窗
//创建一个警告窗控制器,及名字、消息、弹窗类型
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"确定收藏?" preferredStyle:UIAlertControllerStyleAlert]; //警告按钮1
UIAlertAction *action1 = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action)
{ }]; //警告按钮2
UIAlertAction *action2 = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action)
{ }]; //添加警告按钮1、2
[alert addAction:action1];
[alert addAction:action2]; //弹出
[self presentViewController:alert animated:YES completion:^{ }];
8、类的自定义Copy、深拷贝
//.h签协议
<NSCopying> //.m设置要复制的值
- (id)copyWithZone:(nullable NSZone *)zone
{
NSLog(@"复制对象调用了!"); Person *person = [[self class] allocWithZone:zone]; person.name = [_name mutableCopy];
person.age = _age;
person.bookArray = [_bookArray mutableCopy]; return person;
} //在别的类调用
Person *person2 = [person1 copy];
9、类的自定义编码
//.h签协议
<NSCoding> //.m
//设置要编码的值
- (void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeObject:_name forKey:NAME];
[aCoder encodeInteger:_age forKey:AGE];
[aCoder encodeObject:_hobby forKey:HOBBY];
} //.m
//设置要解码的值
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder
{
self = [super init];
if (self)
{
self.name = [aDecoder decodeObjectForKey:NAME];
self.age = [aDecoder decodeIntegerForKey:AGE];
self.hobby = [aDecoder decodeObjectForKey:HOBBY];
}
return self;
} //在别的类调用
//地址
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Desktop/test.txt"]; //归档(编码)
[NSKeyedArchiver archiveRootObject:atext toFile:path] //读取
[NSKeyedUnarchiver unarchiveObjectWithFile:path];
其他:
1、
重写,父类有声明,不必再声明 2、
@private 私有:只有类定义内部可访问
@protected 保护:只有类本身和子类的定义里可访问
@public 公有:程序的任何位置都可访问 3、
协议
@required
@optional 4、
nonatomic
copy assign
附录:
1-1、字符串:
1)、创建
1-1)、
[[NSString alloc]init]; 1-2)、类方法
[NSString stringWithString:string];
[NSString stringWithFormat:@"%@",string2]; 1-3)、对象方法
[[NSString alloc]initWithString:string];
[[NSString alloc]initWithFormat:@"%@",string1]; 2)、格式化拼接
[NSString stringWithFormat:@"%@%@",string3,string4]; 3)、比较
[string3 isEqualToString:string4];
[string3 caseInsensitiveCompare:string4];
[string3 compare:string4] 4)、长度
string.length;
[string length]; 5)、大小写变化
[string uppercaseString];
[string lowercaseString];
[string capitalizedString]; 6)、追加
[string4 stringByAppendingString:string3]; 7)、查找
[string rangeOfString:@"world"];
[string hasPrefix:@“www”];
[string hasSuffix:@“com”]; 8)、截取
[string substringFromIndex:2];
[string substringToIndex:5];
[string substringWithRange:range]; 9)、跟基本数据类型转换
[NSString stringWithFormat:@"%d",a];
[NSString stringWithFormat:@"%f",b];
[NSString stringWithFormat:@"%c",c]; [strnum1 intValue];
[strnum2 floatValue];
const char *cc = [strchar UTF8String]; 10)、取元素
[newstring characterAtIndex:3] 11)、字符串是否包含
[mString containsString:@"hello"];
1-2、可变字符串:
1)、创建
1-1)、类方法
[NSMutableString stringWithString:string];
[NSMutableString stringWithFormat:@"%@",string]; 1-2)、对象方法
[[NSMutableString alloc]initWithString:string];
[[NSMutableString alloc]initWithFormat:@"%@",string]; 2)、替换
[mString replaceCharactersInRange:NSMakeRange(2,2) withString:@"xxx"]; 3)、插入
[mString insertString:@"aaa" atIndex:1]; 4)、删除
[mString deleteCharactersInRange:NSMakeRange(1, 3)]; 5)、追加
[S_1 appendString:@"QAZ"];
[S_1 appendFormat:@"%@",S_1];
2-1、数组:
1、创建
1-1)、
NSArray *array1 = [[NSArray alloc]init];
array1 = @[@"here",@"is",@"China"]; 1-2)、类方法
NSArray *array2 = [NSArray arrayWithObject:@"hello"];
NSArray *array3 = [NSArray arrayWithObjects:@"here",@"is",@"china", nil];
NSArray *array4 = [NSArray arrayWithArray:array1]; 1-3)、对象方法
NSArray *array5 = [[NSArray alloc]initWithObjects:array1,array5, nil];
NSArray *array6 = [[NSArray alloc]initWithObjects:@"here",@"is",@"china", nil];
NSArray *array7 = [[NSArray alloc]initWithArray:array1]; 2)、取下标元素
array5[2];
[array5 objectAtIndex:2]; 3)、长度
array5.count
[array5 count] 4)、是否包含某个元素
[array7 containsObject:@"hello”]; 5)、通过元素获取下标
[array10 indexOfObject:@"1123”]; 6)、数组连接成字符串,字符串分割成数组
NSString *string = [array1 componentsJoinedByString:@","];
NSArray *array2 = [string componentsSeparatedByString:@","]; 7)、访问第一个、最后一个元素
[array1 firstObject];
[array1 lastObject]; 8)、数组遍历
for (NSString *str in array1)
{
NSLog(@"->%@",str);
} 9)、追加元素,生成新的数组
NSArray *array8 = [array1 arrayByAddingObject:@"hello"];
NSArray *array9 = [array1 arrayByAddingObject:array3];
NSArray *array10 = [array1 arrayByAddingObjectsFromArray:array3];
2-2、可变数组:
1、创建
NSMutableArray *mArray = [[NSMutableArray alloc]initWithObjects:@"hello",@"world",@"china", nil]; 2、添加元素
2-1)、
[mArray addObject:@"American"]; 2-2)、
NSArray *array = [[NSArray alloc]initWithObjects:@"hi",@"hei", nil];
[mArray addObjectsFromArray:array]; 3、删除元素
[mArray removeAllObjects];
[mArray removeObject:@"here"];
[mArray removeObjectAtIndex:3];
[mArray removeLastObject];
[mArray removeObjectsInArray:arraytest];
[mArray removeObjectsAtIndexes:set1];
[mArray removeObject:@"here" inRange:NSMakeRange(0, 3)];
[mArray removeObjectsInRange:NSMakeRange(1, 4)]; 4、交换位置
[mArray exchangeObjectAtIndex:0 withObjectAtIndex:3]; 5、替换
[mArray replaceObjectAtIndex:0 withObject:@"objxxx"]; 6、插入
[mArray3 insertObject:@"iiiii" atIndex:1]; 7、遍历
int i=0;
for (NSString *str in mArray)
{
NSLog(@"%@",str);
NSLog(@"%d",i++);
}
3-1、字典:
1)、创建
1-1)、
NSDictionary *dic = [[NSDictionary alloc]init];
dic = @{
@"name":@"xiaoming",
@"age":@"18",
@"sex":@"男",
}; 1-2)、类方法
NSDictionary *dic1 = [NSDictionary dictionaryWithDictionary:dic]; 1-3)、对象方法
NSDictionary *dic2 = [[NSDictionary alloc]initWithObjectsAndKeys:@"xiaohong",@"name",@"20",@"age",@"男",@"sex", nil];
NSDictionary *dic3 = [[NSDictionary alloc]initWithDictionary:dic2]; 2)、长度
dic2.count
[dic2 dic2]; 3)、根据key获取value
[dic objectForKey:@"age"]
dic[@"age"] 4)、取出所有的key
NSArray *keyArray = [dic allKeys]; 5)、取出所有的value
NSArray *valueArray = [dic allValues];
3-2、可变字典:
1、创建
1-1)、
NSMutableDictionary *mDic1 = [NSMutableDictionary dictionary]; 1-2)、对象方法
NSMutableDictionary *mDic = [[NSMutableDictionary alloc]initWithObjectsAndKeys:@"xiaoming",@"name",@"19",@"age",@"男",@"sex", nil]; 2)、添加元素
[mDic setObject:@"80kg" forKey:@"weight"]; 3)、删除元素
[mDic removeObjectForKey:@"age"];
[mDic removeObjectsForKeys:array];
[mDic removeAllObjects]; 4)、遍历
for (NSString *key in mDic)
{
NSLog(@"%@",mDic[key]);
}
4、集合
1)、初始化
1-1)、
NSSet *set = [[NSSet alloc]initWithObjects:@"1",@"2",@"3",@"4",@"3", nil]; 1-2)、可变集合初始化
NSMutableSet *mSet = [NSMutableSet set]; 2)、可变添加对象
[mSet addObject:numobject]; 3)、个数
newSet.count
[newSet count] 4)、任意取! 但不保证随机!
[set anyObject] 5)、是否元素全相同
[set isEqualToSet:newSet] 6)、是否包含
[newSet isSubsetOfSet:set] 7)、消除数组相同元素
7-1)、建个数组
NSArray *array = [NSArray arrayWithObjects:@"3",@"4",@"3", nil]; 7-2)、取数组的对象初始化
NSSet *newSet = [NSSet setWithArray:array]; 7-3)、又把set的对象给数组,自动消除重复
NSArray *newArray = [newSet allObjects];
5、枚举
1)、将 集合set 的值给枚举
NSEnumerator *enumtor = [set objectEnumerator]; 2)、将枚举里的对象一一打印
for (NSObject* obj in enumtor)
{
NSLog(@"-->%@",obj);
}
iOS:常用属性、方法的更多相关文章
- iOS常用公共方法
iOS常用公共方法 字数2917 阅读3070 评论45 喜欢236 1. 获取磁盘总空间大小 //磁盘总空间 + (CGFloat)diskOfAllSizeMBytes{ CGFloat si ...
- Delphi中TStringList类常用属性方法详解
TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 先把要讨论的几个属性列出来: 1.CommaText 2.Delim ...
- iOS 常用公共方法
iOS常用公共方法 1. 获取磁盘总空间大小 //磁盘总空间 + (CGFloat)diskOfAllSizeMBytes{ CGFloat size = 0.0; NSError *error; N ...
- WebBrowser常用属性方法介绍
WebBrowser 常用属性方法 ■■方法 ============================== ▲GoBack 相当于IE的"后退"按钮,使你在当前历史列表中后 ...
- js如何操作表格(常用属性方法汇总)
js如何操作表格(常用属性方法汇总) 一.总结 一句话总结: 二.表格相关的属性和方法 1.1 Table 对象集合 cells[] 返回包含表格中所有单元格的一个数组. 语法:tableObject ...
- iOS常用加密方法(aes、md5、base64)
1.代码 iOS常用加密方法(aes.md5.base64) .AES加密 NSData+AES.h文件 // // NSData-AES.h // Smile // // Created by 周 ...
- express模块中的req,res参数的常用属性方法
express模块中的req,res参数的常用属性方法 const express = require('express'); const router = express.Router() rout ...
- jQuery常用属性方法大全 attr(),val()
@@@@属性篇: 写作本篇文章的意义:jQuery的教程千千万,却没有英文版的API讲的系统.到位,一些话用中文翻译过来味道就变了,所以我将英文版的API的一些常用的方法单独提出来放在这里,并用自己的 ...
- canvas常用属性方法由浅下沉
首先引入<canvas></canvas>标签就不必说了. 其次就是得到canvas的2d环境了( var ctx = canvasDom.getContext('2d') ) ...
- 你遗忘的都在这里—iOS常用类型方法笔记
这些都是项目中常用但又常忘的方法,与大家分享一下. 一.NSString 创建字符串. NSString *astring = @"This is a String!"; 创建空 ...
随机推荐
- PLC通信网络
PLC通信网络的分层 PLC通信网络大致可分为3层,管理层,单元层以及现场执行(AS-I)层.如下图所示. 在PLC通信网络的三层架构中,管理层,通信方式包括MPI,工业以太网(Profinet)以及 ...
- HDU 4731 找规律,打表
http://acm.hust.edu.cn/vjudge/contest/126262#problem/D 分为3种情况,n=1,n=2,n>=3 其中需要注意的是n=2的情况,通过打表找规律 ...
- csharp: ClientScript.RegisterStartupScript int net4.0
//彈出提示 ClientScriptManager cs = Page.ClientScript; StringBuilder sb = new StringBuilder(); sb.Append ...
- javascript: iframe switchSysBar 左欄打開關閉,兼容各瀏覽器操作
<html> <head> <meta content="text/html; charset=utf-8" http-equiv="Con ...
- SharePoint - CAML
1. CAML是顺序操作,如果要实现类似 “A or B or C or D” 的结果,最好写成 “(((A or B) or C) or D)”的形式,但写成 “((A or B) or (C or ...
- SharePoint 2013 - REST Service
0. SharePoint 2013使用_api来标识出 REST SERVICE,REST Service其实是 client.svc web service的一部分,但为了简化 REST URI的 ...
- python 初识
一.Python介绍 Python简介 Python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解 ...
- 单例模式(C++)
#include <iostream> #include <string> using namespace std; class singleton { private: si ...
- Tcpdump usage examples
In most cases you will need root permission to be able to capture packets on an interface. Using tcp ...
- 一个自动生成awr报告的shell脚本
最近在学习shell编程,搞一点点小工具自动完成awr报告的收集工作,方便系统出现问题时问题排查.脚本内容如下,系统收集每天开始时间6点结束时间20点的awr报告并存储在/u01/shell_t/aw ...