NSArray不可变字符串的主要操作有:创建、枚举、排序、与NSString之间的相互转换

注意:

NSArray可以存对象,不可以存基本数据类型、结构体、数组、指针、nil、NULL

NSArray用nil作为结束标识符。

NSNull可以代表一个空对象。

整个操作还是通过代码来体现吧:

    .h Person类的声明文件如下:  

#import <Foundation/Foundation.h>

@interface Person : NSObject

@property(nonatomic,copy)NSString* name;

@property(nonatomic,assign)NSInteger age;

+(Person*)personWithName:(NSString*)name andAge:(NSInteger)age;

-(id)initWithName:(NSString*)name andAge:(NSInteger)age;

-(NSComparisonResult)compareByName:(Person *)aPerson;//声明排序方式为通过姓名比较

-(NSComparisonResult)compareByAge:(Person *)aPerson;//声明排序方式为通过年龄比较

@end

    .m Person类的实现文件如下:

#import "Person.h"

@implementation Person

+(Person*)personWithName:(NSString*)name andAge:(NSInteger)age

{

return [[Person alloc]initWithName:name andAge:age];

}

-(id)initWithName:(NSString*)name andAge:(NSInteger)age

{

self = [super init];

if(self)

{

_name = name;

_age = age;

}

return self;

}

-(NSString*)description//由于数组存储的是自定义的对象Person对象,所以复写description方法,将NSlog重新格式化输出

{

return  [NSString stringWithFormat:@"name=%@,age=%ld",_name,_age];

}

-(NSComparisonResult)compareByName:(Person *)aPerson //返回一个selector选择器选择的比较方式,字符串比较默认为NSOrderAsecding

{

return [_name compare:aPerson.name];

}

-(NSComparisonResult)compareByAge:(Person *)aPerson//与上同理

{

if(_age > aPerson.age)

return NSOrderedDescending;

else if (_age < aPerson.age)

return NSOrderedAscending;

else

return NSOrderedSame;

}

@end

    主函数测试如下:

#import <Foundation/Foundation.h>

#import "Person.h"

int main(int argc, const char * argv[])

{

@autoreleasepool

{

//NSArray测试

/*

NSArray可以存对象,不可以存基本数据类型、结构体、数组、指针、nil、NULL

NSArray用nil作为结束标识符。

NSNull可以代表一个空对象。

*/

//创建一个空对象

NSNull *nul = [NSNull null];

//在一个array中不要求只存相同类型的对象,可以存储任意类型的对象

NSArray *arr = @[@1,@"one",@"2",nul];

NSLog(@"%@",arr);

//枚举

NSEnumerator *enumerator = [arr objectEnumerator];

id obj;

while(obj = [enumerator nextObject])

{

NSLog(@"%@",obj);

}

//保存到文件中(必须是OC内置的对象,自定义的对象会出错)

[arr writeToFile:@"/Users/mac/Desktop/arr.txt" atomically:YES];

//读文件创建NSArray

NSArray *arr1 = [NSArray arrayWithContentsOfFile:@"/Users/mac/Desktop/arr.txt"];

NSLog(@"%@",arr1);

//排序

NSArray *arr2 =  @[@2,@5,@1,@4,@3];

NSArray *sorted = [arr2 sortedArrayUsingSelector:@selector(compare:)];

NSLog(@"%@",sorted);

NSArray *arr3 = @[@"two",@"three",@"five",@"one",@"four"];

NSArray *sorted2 = [arr3 sortedArrayUsingSelector:@selector(compare:)];

NSLog(@"%@",sorted2);

//自定义对象的排序

NSArray *arrayperson = @[[Person personWithName:@"Tom" andAge:25],

[Person personWithName:@"Jobs" andAge:23],

[Person personWithName:@"Bill" andAge:26],

[Person personWithName:@"John" andAge:21]];

//按姓名排序

NSArray *sortedByName = [arrayperson sortedArrayUsingSelector:@selector(compareByName:)];

NSLog(@"%@",sortedByName);

//按年龄排序

NSArray *sortedByAge = [arrayperson sortedArrayUsingSelector:@selector(compareByAge:)];

NSLog(@"%@",sortedByAge);

//NSArray和NSString

NSString *str = @"this is a test";

NSArray *words = [str componentsSeparatedByString:@" "];//分隔符

NSLog(@"%@",words);

NSString *str2 = [words componentsJoinedByString:@"-"]; //连接符

NSLog(@"%@",str2);

}

return 0;

}

      测试结果如下所示:

2015-08-18 17:37:39.772 01-NSArray[1948:112551] (1,one,2,"<null>"
)
2015-08-18 17:37:39.795 01-NSArray[1948:112551] 1
2015-08-18 17:37:39.796 01-NSArray[1948:112551] one
2015-08-18 17:37:39.797 01-NSArray[1948:112551] 2
2015-08-18 17:37:39.797 01-NSArray[1948:112551] <null>
2015-08-18 17:37:39.798 01-NSArray[1948:112551] (null)
2015-08-18 17:37:39.798 01-NSArray[1948:112551] (1,2,3,4,5
)
2015-08-18 17:37:39.799 01-NSArray[1948:112551] (five,four,one,three,two
)
2015-08-18 17:37:39.799 01-NSArray[1948:112551] ("name=Bill,age=26","name=Jobs,age=23","name=John,age=21","name=Tom,age=25"
)
2015-08-18 17:37:39.800 01-NSArray[1948:112551] ("name=John,age=21","name=Jobs,age=23","name=Tom,age=25","name=Bill,age=26"
)
2015-08-18 17:37:39.800 01-NSArray[1948:112551] (this,is,a,test
)
2015-08-18 17:37:39.800 01-NSArray[1948:112551] this-is-a-test
Program ended with exit code: 0

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!
本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/4740101.html,如需转载请自行联系原作者

Objective-C:NSArray的常见操作相关推荐

  1. 路径,文件,目录,I/O常见操作汇总

    摘要:    文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供一些解决方案,即使没有你想要的答案 ...

  2. python字典操作添加_Python字典常见操作实例小结【定义、添加、删除、遍历】

    本文实例总结了python字典常见操作.分享给大家供大家参考,具体如下: 简单的字典: 字典就是键值对key-value组合. #字典 键值对组合 alien_0 ={'color':'green', ...

  3. BOM,DOM常见操作和DHML

    BOM (Browser Object Model)浏览器对象模型,控制浏览器的一些行为 window对象 代表一个HTML文档 属性 页面导航的5个属性 self, parent, top, ope ...

  4. go语言笔记——切片函数常见操作,增删改查和搜索、排序

    7.6.6 搜索及排序切片和数组 标准库提供了 sort 包来实现常见的搜索和排序操作.您可以使用 sort 包中的函数 func Ints(a []int) 来实现对 int 类型的切片排序.例如  ...

  5. 在单链表写入一组数据代码_链表常见操作和15道常见面试题

    什么是单链表 链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer),简单来说链表并不像数组那样 ...

  6. python基础实例-Python基础之字符串常见操作经典实例详解

    本文实例讲述了Python基础之字符串常见操作.分享给大家供大家参考,具体如下: 字符串基本操作 切片 # str[beg:end] # (下标从 0 开始)从下标为beg开始算起,切取到下标为 en ...

  7. C#路径/文件/目录/I/O常见操作汇总(一)

    文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题, 尽量提供一些解决方案,即使没有你想要的答案,也希望能提 ...

  8. python下selenium模拟浏览器常见操作

    本文主要记录下selenium的常见操作,如定位具体元素的不同方法.在具体元素内循环.提取文本等.具体代码如下: # -*- coding: utf-8 -*- ''' Created on 2019 ...

  9. Java数组常见操作

    Java数组常见操作 文章目录 Java数组常见操作 7.0 数组的遍历 1.使用foreach循环访问数组中每个元素. 2.使用简单的for循环(多层循环嵌套)来遍历数组. 7.1 数组长度 7.2 ...

最新文章

  1. Subset-Sum Problem 子集和问题
  2. 电子科技大学研究生计算机与科学,川大和电子科技大学那个计算机考研专业好?...
  3. yolo opencv_如何使用Yolo,SORT和Opencv跟踪足球运动员。
  4. python 公众号爬虫_python_爬虫_微信公众号抓取
  5. 使用dotnet Cli向nuget发布包
  6. 使用Open Liberty的开发模式最大程度地缩短周转时间
  7. 你需要知道的Linux 系统下外设时钟管理
  8. 史上最全设计模式——原型模式
  9. python入门——P54论一只爬虫的自我修养1
  10. java ajax返回数组_js对ajax返回数组的处理介绍
  11. 【前端进阶之路】内存基本知识
  12. 谈一谈SQL Server中的执行计划缓存(下)
  13. 【离散数学】数理逻辑 第二章 谓词逻辑(4) 谓词逻辑的推理理论
  14. STM32程序下载详解
  15. 浅析内网沟通软件有什么特点
  16. 戴尔台式计算机usb驱动,dell服务器和电脑不支持usb2.0设备安装系统的解决方案方法...
  17. 深入解读RFM模型-实战应用干货
  18. 如何创建 Ubuntu 信息亭(kiosk)
  19. BootStrap一页通(样式+组件+插件)
  20. 英语口语练习三十之听歌学口语:Boom Clap,你在我的世界里闪闪发光用法

热门文章

  1. python合并word全部_python:怎样合并文档中有重复部分的行?
  2. 相同布局在不同手机上显示不同_React Native布局详细指南
  3. 文件实时上传至云服务器的方法,文件实时上传至云服务器的方法
  4. python与jupyter关系,Ipython,jupyter和kernels是什么关系?
  5. java高端架构_Java高端架构师
  6. java 删除已画出的线_如何删除java中的绘制线?
  7. Java案例:读取XML文档
  8. Java实训项目6:GUI学生信息管理系统 - 实现步骤 - 创建项目
  9. 英语学习笔记2019-11-15
  10. bzoj2299 [HAOI2011]向量 结论 裴蜀定理