ios 中NSArray
//
#import <Foundation/Foundation.h>
#import "Animal.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
//1. 创建方法
//2. 排序
//3. 取元素
//4. 连接,分隔
//5. 强引用
//6. for...in
Animal *ani = [[Animal alloc] init];
ani.age = 12;
//创建一个有三个元素的OC不可变数组
//不可变数组的元素不能再变
// NSArray *arr1 = @[@12, @"34", ani];
// NSLog(@"%lu", arr1.count);
// NSLog(@"%@", arr1);
//不是修改数组
ani.age = 20;
Animal *ani10 = [[Animal alloc] init];
ani10.age = 5;
Animal *ani11 = [[Animal alloc] init];
ani11.age = 48;
NSArray *arr1 = @[ani, ani10, ani11];
NSLog(@"%@", arr1);
//排序,只需要实现两两之间比较的方法
//SEL
NSArray *arr10 = [arr1 sortedArrayUsingSelector:@selector(myCompare:)];
// NSLog(@"%@", arr10);
//依次执行print
[arr10 makeObjectsPerformSelector:@selector(print)];
//可以传递一个参数
[arr10 makeObjectsPerformSelector:@selector(call:) withObject:@"Zhangsan"];
//产生新数组,并且参数作为最后一个元素
NSArray *arr30 = [arr10 arrayByAddingObject:@"aa"];
NSLog(@"%p, %p", arr10, arr30);
NSString *str10 = @"a.b.c";
//分割字符串
NSArray *arr40 = [str10 componentsSeparatedByString:@"."];
NSLog(@"%@", arr40);
//连接字符串
NSString *str11 = [arr40 componentsJoinedByString:@"<+>"];
NSLog(@"%@", str11);
// NSArray *arr20 = @[@123, @"234", @345];
// [arr20 writeToFile:@"/Users/apple/Desktop/test.plist" atomically:YES];
//
// NSArray *arr21 = [NSArray arrayWithContentsOfFile:@"/Users/apple/Desktop/test"];
// NSLog(@"%@", arr21);
return 0;
NSNumber *num1 = arr1[0];
NSLog(@"%@", num1);
Animal *ani2 = [[Animal alloc] init];
ani2.age = 20;
NSNumber *num2 = @34;
//检查是否包含某个对象
if([arr1 containsObject:num2]) {
NSLog(@"在arr1中");
//获取对象的位置
NSUInteger index = [arr1 indexOfObject:ani2];
NSLog(@"%lu", index);
if (NSNotFound == index) {
NSLog(@"没zhaodao ");
}
}
else {
NSLog(@"不在");
}
return 0;
NSLog(@"%lu", arr1.count);
// ani = nil;
//nil表示参数结束
//数组中不能装nil对象
arr1 = [[NSArray alloc] initWithObjects:@90, ani, @80, nil];
NSLog(@"%@", arr1);
// id cArr[4];
// cArr[0] = @"abc";
// cArr[1] = @"efg";
// cArr[2] = ani;
// cArr[3] = @"xxx";
// arr1 = [[NSArray alloc] initWithObjects:cArr count:4];
// NSLog(@"%@", arr1);
//创建一个数组,并且用arr1中的元素初始化
//实际上数组里装的是对象的指针,数组会对装入其中的对象产生一个强引用
NSArray *arr2 = [NSArray arrayWithArray:arr1];
NSLog(@"%lu", arr2.count);
//根据位置获取对象
// NSLog(@"%@", arr2[1]);
NSLog(@"%@", [arr2 objectAtIndex:arr2.count - 1]);
//获取第0个元素
NSLog(@"%@", [arr2 firstObject]);
//获取最后一个元素
NSLog(@"%@", [arr2 lastObject]);
NSLog(@"------");
for (int i = 0; i < arr2.count; ++i) {
NSLog(@"%@", arr2[i]);
}
//两个类型
//1. 编译时类型,指针的类型
//2. 运行时类型,对象的类型
NSLog(@"+++++");
arr2 = @[@12, ani, @34];
//快速枚举
for (id obj in arr2) {
//检查一个对象是否为NSNumber类型
if ([obj isKindOfClass:[NSNumber class]]) {
NSNumber *num = (NSNumber *)obj;
NSLog(@"%d", num.intValue);
}
else if ([obj isKindOfClass:[Animal class]]){
Animal *animal = (Animal *)obj;
NSLog(@"age: %d", animal.age);
}
// obj.age = 20;
}
ani = nil;
arr1 = nil;
arr2 = nil;
NSLog(@"xxxxxxx");
}
NSLog(@"-----");
return 0;
}
ios 中NSArray的更多相关文章
- 从deque到std::stack,std::queue,再到iOS 中NSArray(CFArray)
从deque到std::stack,std::queue,再到iOS 中NSArray(CFArray) deque deque双端队列,分段连续空间数据结构,由中控的map(与其说map,不如说是数 ...
- iOS中--NSArray调用方法详解 (李洪强)
下面的例子以 NSArray *array = [NSArray arrayWithObjects:@"wendy",@"andy",@"to ...
- IOS 中 NSArray
今天在做 cordova 关于处理未读条数的插件时,需要在js中传入 int 型. 但是发现所有插件 里面的参数信息都是封装在NSArry对象里面. 因此又突然想直接在NSArry获取信息的想法 ...
- iOS中数据库应用基础
iOS 数据库入门 一.数据库简介 1.什么是数据库? 数据库(Database) 是按照数据结构来组织,存储和管理数据的仓库 数据库可以分为2大种类 关系型数据库(主流) PC端 Oracle My ...
- iOS 中的 HotFix 方案总结详解
相信HotFix大家应该都很熟悉了,今天主要对于最近调研的一些方案做一些总结.iOS中的HotFix方案大致可以分为四种: WaxPatch(Alibaba) Dynamic Framework(Ap ...
- iOS中获取各种文件的目录路径的方法
我们的app在手机中存放的路径是:/var/mobile/Applications/4434-4453A-B453-4ADF535345ADAF344 后面的目录4434-4453A-B453-4AD ...
- iOS中的数据持久化方式
iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data. 1.属性列表 涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults ...
- iOS:iOS中的多控制器管理
iOS中的控制器有三种创建方式: 1.通过storyboard创建 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@" ...
- iOS中几种常用的数据存储方式
自己稍微总结了一下下,方便大家查看 1.write直接写入文件的方法 永久保存在磁盘中,可以存储的对象有NSString.NSArray.NSDictionary.NSData.NSNumber,数据 ...
随机推荐
- JavaScript——Cookie
JavaScript中的Cookie基础 页面用来保存信息的,比如登录.记住用户名. [cookie的特性] (1)同一个网站中所有页面共享一套cookie: (2)数量.大小有限: (3)有保质期, ...
- VHDL设计问题
在做算术运算的时候,不可以用std_ulogic_vector,必须是std_logic_vector.
- 2017-1-15-libubox analysis
2017-1-15-libubox analysis libubox utils.h utils.h 提供了一些简单的实用工具函数.比如大小端转换,位图操作,编译器属性的封装,连续内存申请函数call ...
- 给hexo添加评论系统
默认主题 landscape 文件目录,comments为新建的 _config.yml layout -- _partial -- article.ejs |- comments -- disqus ...
- PHP截取含中文的混合字符串长度的函数
截取含中文的混合字符串长度 /** * 截取中文混合字符串指定长度 * * @param string $string * @param integer $length * @param string ...
- CodeForces 705C Thor
开30W个vector将数字归类,每一类数字开一个指针P,记录已经阅读到哪一个了,还可以开一个优先队列维护这些指针P. #pragma comment(linker, "/STACK:102 ...
- 统计C语言程序行数
补充前一篇中统计C语言程序行数的程序 写得比较匆忙,可能有些失误,等弄明白GitHub的用法并完善程序后再补充完整代码链接 没有写成函数,但经过简单修改可以作为一个计算或判断函数使用 判断算法主要为以 ...
- linux 查看日志
第一步 :提交自己目录文件(先到自己目录下载最新文件-->合并-->提交到临时目录temp-->在提交到master总目录-->其他关联master远 程分支的目录.就可以pu ...
- 如何理解CSS中的浮动 :其实他就像乘坐扶梯一样
只要你用过自动扶梯,你就能很快的理解CSS中的浮动(Float). 你肯定遇到过这样的情况: 做好了,你想用CSS浮动来调整元素间的位置关系. 在写完代码之后,你发现浮动元素没出现在你设想 ...
- Openjudge-计算概论(A)-求满足条件的3位数
描述: 编写程序,按从小到大的顺序寻找同时符合条件1和2的所有3位数,条件为: 1.该数为完全平方数 2.该数至少有2位数字相同 例如,100同时满足上面两个条件. 输入输入一个数n,n的大小不超过实 ...