NSMutableArray (可变数组增、删、改、查)

来源:互联网 发布:淘宝库存软件 编辑:程序博客网 时间:2024/06/10 00:11


//1.1 初始化    NSMutableArray *muArray = [NSMutableArray arrayWithObjects:@"123",@"345",@"2354", nil];    NSMutableArray *mutAry = [NSMutableArray array];    //从其它数组中添加元素    [mutAry addObjectsFromArray:muArray];    //1.2 初始化划好几个元素容量的内存空间,当不超过元素个数时不需要重新请求内存,实际用得较少    NSMutableArray *mutableAry = [[NSMutableArray alloc]initWithCapacity:4];    [mutableAry addObject:@"1"];    [mutableAry addObject:@"2"];    [mutableAry addObject:@"3"];    [mutableAry addObject:@"4"];    [mutableAry addObject:@"1"];    [mutableAry addObject:@"5"];    [mutableAry addObject:@"6"];            //=======增    [muArray insertObject:@"456" atIndex:2];    [muArray addObject:@"d"];    NSLog(@"%@",muArray);            //=======删    [muArray removeObject:@"123"];    //删除所有//    [muArray removeAllObjects];    //删除数组最后一个元素    [muArray removeLastObject];    //删除指定范围的@"1"值    NSRange range = {2,5};    //    [mutableAry removeObject:@"1" inRange:range];  //1234156  --> 123456    //    [muarray removeObjectAtIndex:4];    NSLog(@"%@",muArray);    //删除相同元素 及 删除指定范围内相同元素//    [mutableAry removeObject:@"1"];//    [mutableAry removeObjectIdenticalTo:@"1"];//    [mutableAry removeObjectIdenticalTo:<#(nonnull id)#> inRange:<#(NSRange)#>]    //根据另一数组元素找出所对应的删除//    [mutableAry removeObjectsInArray:@[@"1",@"4",@"6"]];                //========改//    [muArray replaceObjectAtIndex:3  withObject:@"23"];    NSLog(@"%@",muArray);                //========查    NSString *str = [muArray objectAtIndex:2];    NSLog(@"%@",muArray[1]);    NSLog(@"%@",str);            //数组中加入Number    [muArray addObject:[NSNumber numberWithInt:3]];    int i = [[muArray lastObject] intValue];    [muArray addObject:[NSNumber numberWithFloat:2]];    float y = [[muArray lastObject] floatValue];            //元素调换位置   123456   3和5调换==》125436    [mutableAry exchangeObjectAtIndex:2 withObjectAtIndex:4];


   数组写入本地文件保存

//- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;    //数组写入文件保存    //从文件转成数组  生成本地一个data.txt文件拖到工程    //沙盒根目录路径    NSString *doucumonPath = [NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES) objectAtIndex:0];    NSString *fileName = @"data.plist"; //data.txt    //根目录下新创建文件夹路径    NSString *folderPath = [doucumonPath stringByAppendingPathComponent:@"myFolder"];    //完整文件路径    NSString *path = [folderPath stringByAppendingPathComponent:fileName];        //创建文件管理器    NSFileManager *file=[NSFileManager defaultManager];    if (![file fileExistsAtPath:folderPath]) {        [[NSFileManager defaultManager] createDirectoryAtPath:folderPath withIntermediateDirectories:YES attributes:nil error:nil];    }    BOOL b = [mutableAry writeToFile:path atomically:YES];        //获取文件数组    //项目路径读取    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"txt"];    //沙盒路径读取    NSMutableArray *fileAry = [NSMutableArray arrayWithContentsOfFile:path];    //==================================================


</pre></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 13.5px; line-height: normal; font-family: Menlo; color: rgb(0, 175, 202);">arrayWithContentsOfURL</p><pre name="code" class="objc">//从URL转为数组    //URL可以是 http://xxx.plist http://.xxx.xml  http://.xxx.txt 等下载地址    NSURL *url = [NSURL fileURLWithPath:path];    //本地URL:file:///var/mobile/Containers/Data/Application/6856FD5B-C8F1-4282-8DF3-D49B97355680/Library/Documentation/myFolder/data.xml    BOOL bb = [mutableAry writeToURL:url atomically:YES];    NSMutableArray *urlAry = [NSMutableArray arrayWithContentsOfURL:url];


//把非对象类型存入数组 

想把一些view frame存储到NSArray中,但是CGRect其实是结构体,必须封装成对象才可以存入Array,Dictionary中,苹果自带NSValue封装这些结构体,具体如下。

因为CGRect,CGPoint等不是NSObject的子类,因此不能够直接添加到NSMutableArray中,所以要先将其转换成NSObject的子类。NSValue类可以解决这个问题,见NSValue类的声明:

如下,可以将CGRect,CGPoint等的数值转换成NSValue类的数值。

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"lockButton.png"]];

imageView.frame = CGRectMake(10 * (l + 1) + imageView.frame.size.width * l, 120 + 50 * r, imageView.frame.size.width, imageView.frame.size.height);

[self.lockImageRectArray addObject:[NSValue valueWithCGRect:imageView.frame]];

[self addSubview:imageView];

通过下面的代码,又可以将NSValue转换成CGRect,CGPoint等类型的数值。

CGRect imageRect = [[self.lockImageRectArray objectAtIndex:l] CGRectValue];

通过NSValue就可以实现CGxxx类型的数值存储在NSMutable,NSDictionary类型的数组中。



0 0
原创粉丝点击