Foundation框架基础 NSArray

Foundation/Foundation.h>
#import "CZDog.h"
#import
"CZPerson.h"
/*
 NSArray:不可以变
 */

int main( int argc, const char * argv[]) {
// 字符串转数组
   
NSArray *array = @[ @"a" , @"b" , @"c" , @"d" ] ;
  
//  写入文件
//    NSString *path = @"/Users/apple/Desktop/test.plist";
//    BOOL isSuccess = [array writeToFile:path atomically:YES];
//    if (isSuccess) {
//        NSLog(@"写入成功!");
//    }

  从文件中读取内容
//    array = [NSArray arrayWithContentsOfFile:path];
//    NSLog(@"%@",array);
//   

//  URL 写入
   
NSURL *url = [ NSURL URLWithString : @"file:///Users/apple/Desktop/test.plist" ];
   
BOOL isSuccess = [array writeToURL :url atomically : YES ];
   
if (isSuccess) {
       
NSLog ( @"写入成功!" );
    }
//  URL 读
    array = [
NSArray arrayWithContentsOfURL :url];
   
NSLog ( @"%@" ,array);
   
   
return 0 ;
}

void testCompent()
{
   
// 字符串转数组
   
NSString *string = @"1 2 3 4 5 6" ;
   
//  使用字符串来分割原来的字符串成一个数组
   
NSArray *array =  [string componentsSeparatedByString : @" " ];
   
   
NSLog ( @"%@" ,array);
   
//  把数组组装字符串
   
NSString *str = [array componentsJoinedByString : @"-" ];
   
NSLog ( @"%@" ,str);
}

void testSorted()
{
   
// 数组遍历(4种方式)
   
CZDog *dog = [[ CZDog alloc ] init ];
    dog.
name = @"xiaohei" ;
    dog.
age = 10 ;
   
CZDog *dog2 = [[ CZDog alloc ] init ];
    dog2.
name = @"xiaohuang" ;
    dog2.
age = 11 ;
   
CZDog *dog3 = [[ CZDog alloc ] init ];
    dog3.
name = @"xiaohong" ;
    dog3.
age = 6 ;
   
CZDog *dog4 = [[ CZDog alloc ] init ];
    dog4.
name = @"xiaobai" ;
    dog4.
age = 6 ;
   NSArray *array = @[dog,dog2,dog3,dog4];

    //  排序
   
//  通过selecor 选择器 进行排序
   
//    array = [array sortedArrayUsingSelector:@selector(compare:)];
   
NSLog ( @"%@" ,array);
   
//  第二种方式 使用比较器(block)
   
//    array = [array sortedArrayUsingComparator:^NSComparisonResult(CZDog * obj1, CZDog *  obj2) {
   
//
   
//        if(obj1.age == obj2.age){
   
//            return [obj1.name compare:obj2.name];
   
//        }else if(obj1.age > obj2.age){
   
//            return NSOrderedDescending;//降序
   
//        }else{
   
//            return NSOrderedAscending;//升序
   
//        }
   

   
        return [obj1.name compare:obj2.name];
   
//    }];
   NSLog(@"%@",array);

    //  第三种方式:属性描述器
   
NSSortDescriptor *desc1 = [ NSSortDescriptor sortDescriptorWithKey : @"age" ascending : YES ];
   
NSSortDescriptor *desc2 = [ NSSortDescriptor sortDescriptorWithKey : @"name" ascending : YES ];
   
    array = [array
sortedArrayUsingDescriptors : @[ desc1,desc2 ] ];
   
NSLog ( @"%@" ,array);
}

void testMakeObjectsPerform()
{
   
// 数组遍历(4种方式)
   
CZDog *dog = [[ CZDog alloc ] init ];
    dog.
name = @"xiaohei" ;
   
   
CZDog *dog2 = [[ CZDog alloc ] init ];
    dog2.
name = @"xiaohuang" ;
   
   
CZDog *dog3 = [[ CZDog alloc ] init ];
    dog3.
name = @"xiaohong" ;
   
   
CZDog *dog4 = [[ CZDog alloc ] init ];
    dog4.
name = @"xiaobai" ;
   NSArray *array = @[dog,dog2,dog3,dog4];

    //  让数组中的所有元素执行某个方法
    [array
makeObjectsPerformSelector : @selector (bark)];
    [array
makeObjectsPerformSelector : @selector (eat:) withObject : @"骨头" ];
}


void testBianLi()
{
   
// 数组遍历(4种方式)
   
CZDog *dog = [[ CZDog alloc ] init ];
    dog.
name = @"xiaohei" ;
   
   
CZDog *dog2 = [[ CZDog alloc ] init ];
    dog2.
name = @"xiaohuang" ;
   
   
CZDog *dog3 = [[ CZDog alloc ] init ];
    dog3.
name = @"xiaohong" ;
   
   
CZDog *dog4 = [[ CZDog alloc ] init ];
    dog4.
name = @"xiaobai" ;
   NSArray *array = @[dog,dog2,dog3,dog4];

    //  使用普通for
   
   
//    for (int index = 0; index < array.count; index++) {
   
//          CZDog *dog =  array[index];
   
//          NSLog(@"%@",dog);
   
//    }
   
//  使用增加for(最常用)
   
//    for (CZDog *dog in array) {
   
//
   
//        NSLog(@"%@",dog);
   
//
   
//    }
   
   
//  通过枚举器
   
//    NSEnumerator *enumer  =  [array objectEnumerator];
   
//    CZDog *newDog;
   
//    while (newDog = [enumer nextObject]) {
   
//        NSLog(@"%@",newDog);
   
//    }
   
   
//  通过block方式
   
//   idx 表示这个元素在数组索引
   //   stop 设置为YES 那么就不往后遍历的

    [array enumerateObjectsUsingBlock :^( CZDog * dog, NSUInteger idx, BOOL *stop) {
       
NSLog ( @"%@-%zd" ,dog,idx);
       
if (idx == 2 ) {
            *stop =
YES ;
        }
    }];
}


void testArray()
{
   
CZDog *dog = [[ CZDog alloc ] init ];
    dog.
name = @"xiaohei" ;
   
   
CZDog *dog2 = [[ CZDog alloc ] init ];
    dog2.
name = @"xiaohei" ;
   
   
CZPerson *person = [[ CZPerson alloc ] init ];
    person.
name = @"apple" ;
   NSArray *arr = @[dog,person];

    //  获取数组中的元素
   
//  通过对象方法 取出第0个元素
   
CZDog *dog1 = [arr objectAtIndex : 0 ];
   
NSLog ( @"%@" ,dog1);
   
   
//  快捷方式  取出第0个元素
    dog1 = arr[
0 ];
   
NSLog ( @"%@" ,dog1);
   
   
// 获取数组长度
   
long len  = [arr count ];
    len = arr.
count ;
   NSLog(@"%zd",len);

    //  判断数组中是否包含某个元素
   
//  判断是不是包含某个对象,调用这个对象上isEqual方法
   
BOOL isContain = [arr containsObject :dog2];
   
if (isContain) {
       
NSLog ( @"包含!" );
    }
}


void testCreateArray()
{
   
//  NSArray 的创建
   
   
//  简洁的构造方法
   
//   nil 表示数组结束了,不要创建数组的中间加入nil
   
//     NSArray *array = [NSArray arrayWithObjects:@"a",nil,@"b",@"c",nil];
   
CZDog *dog = [[ CZDog alloc ] init ];
    dog.
name = @"xiaohei" ;
   
CZPerson *person = [[ CZPerson alloc ] init ];
    person.
name = @"apple" ;
   
   
NSArray *array = [ NSArray arrayWithObjects :dog,person, @"a" , nil ];
   NSLog(@"%@",array);

    //   通过初始化方法
    array = [[
NSArray alloc ] initWithObjects :dog,person, @"a" , nil ];
   NSLog(@"%@",array);

    //   通过字面量方法:常用
   
NSArray *arr = @[ dog,person, @"abc" ] ;
   
NSLog ( @"%@" ,arr);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值