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;
主函數測試如下:
int main(int argc, const char * argv[])
@autoreleasepool
//NSArray測試
/*
NSArray可以存對象,不可以存基本資料類型、結構體、數組、指針、nil、NULL
*/
//建立一個空對象
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;
測試結果如下所示:


程式猿神奇的手,每時每刻,這雙手都在改變着世界的互動方式!
本文轉自當天真遇到現實部落格園部落格,原文連結:http://www.cnblogs.com/XYQ-208910/p/4740101.html,如需轉載請自行聯系原作者