黑马程序员——OC基础---Foundation<NSArray补充,NSMultableArray,NSDictionary>

来源:互联网 发布:深圳最好的java培训 编辑:程序博客网 时间:2024/06/05 18:22

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——

第一讲 NSArray 读写文件

1 NSArray 数据写入到文件

顾名思义:就是把NSArray中内容写入到文件中,首先看一个例子。

int main(int argc,const char * argv[] ){NSArray *array=[NSArray arrayWithObjects:@"one",@"asd",@"sda",nil];BOOL isWrite=[array writeToFile:@"/Users/tanzhiwen/Desktop/arr.plist" atomically:YES];if(isWrite){NSLog(@"写入成功")};//从文件中读取一个数组信息NSArray &readArr=[NSArray arrayWithContentOfFile:@"/Users/tanzhiwen/Desktop/arr.plist"];NSLog(@"readArr=%@",readArr);}return 0;}

这样就可以在桌面上看到.plist文件了。
又如:

-(void)writeToPlist:(NSArray *)uploadingfiles  Name:(NSString *)name{        NSMutableArray *sList = [[NSMutableArray alloc ]initWithCapacity:[uploadingfiles count] * 2];        for(uploadfile* tmp in uploadingfiles)          {            if(tmp.filename)                [sList addObject :tmp.filename];            else {                [sList addObject :@""];            }            if(tmp.filesize)                [sList addObject :tmp.filesize];            else {                [sList addObject :@""];            }                }        [sList writeToFile:getFullPath(name) atomically:YES];}

同上

第二讲 IPhone NSString,NSArray字符串分割和拼接方法

拼接:
例,以下代码将在控制台输出字符串”here be dragons”:

NSArray *pathArray = [NSArray arrayWithObjects:@"here",                                                       @"be", @"dragons", nil];  NSLog(@"%@",[pathArray componentsJoinedByString:@" "]);  

分割:

例, 以下代码将字符串分割成有三个字符串的组

NSString* str = @"here be dragons";  [str componentsSeparatedByString:@" "];  for(NSString* s in str) NSLog(s); 

第三讲 NSMutableArray及基本使用

NSMutableArray继承NSArray,所以继承它的方法,NSArray初始化以后就是固定的,不会改变其中的内容。NSMutableArray中的内容是可以改变的,随时可以向其中添加删除元素。
NSMutableArray *array=[NSMutableArray array];

NSMutableArray的基本用法:
NSMutableArray *array=[NSMutableArray array];
NSMutableArray *array=[[NSMutableArray alloc]initWithCapicity:5];
NSMutableArray*array=[NSMutableArray arrayWithObjects:@”123”,@”ad”,nil];

这里综合一下NSMutableArray的用法:

/*     初始化方法:     1.init返回一个空数组     2.initWithArray从已有数组初始化     3.initWithContentsOfFile//从plist文件加载     4.initWithContentsOfUrl//从网络地址上获取     5.initWithObject用一个对象初始化     6.initWithObjects从多对象初始化*/self.theDataArray=[[NSMutableArray alloc]initWithCapacity:5];//打印最后一个元素:NSLog(@"the object  is:%@",[theDataArray lastObject]);//枚举所有元素,方法一:for (NSString * theStr in theDataArray) {     NSLog(@"%@:",theStr);}//从指定索引插入元素[theDataArray insertObject:@"this is inerted object" atIndex:0];//是插入到指定 索引的前面  //修改.更新元素     [theDataArray replaceObjectAtIndex:0 withObject:@"new obj"];//指定索引修改  /判断数组是否包含某个对象     if ([theDataArray containsObject:@"selectiont"]) {        NSLog(@"the object selection is contained in array");    }    else{        NSLog(@"not contain");    }  //获取元素索引    NSLog(@"the idx is:%i",[theDataArray indexOfObject:@"selection"]); 

第四讲 NSDictionary的用法
字典就是关键字及其定义(描述)的集合。Cocoa中的实现字典的集合NSDictionary在给定的关键字(通常是一个NSString)下存储一个数值(可以是任何类型的对象)。然后你就可以用这个关键字来查找相应的数值。
不同于数组,字典(也被称为散列表或关联数组)使用的是键查询的优化存储方式。它可以立即找出要查询的数据,而不需要遍历整个数组进行查找。
可使用dictionaryWithObjectsAndKeys来创建字典
查询字典的值:objectForKey
NSMutableDictionary的dictionary方法可以创建一个可变字典,也可以使用dictionaryWithCapaticy:。
使用 setObject:forkey: 方法添加字典元素,如果关键字已存在,则用新植替换旧值。
类似的,NSMutableDictionary类允许随意添加或删除字典元素。
添加元素:setObject:forkey:
删除元素:removeObjectForKey:

// 2  //  MyClass.h#import <Cocoa/Cocoa.h>10 11 12 @interface MyClass : NSObject13 {14     NSString *firstName;15     NSString *lastName;16 }17 18 19 - (void) setFirstName:(NSString *)m_firstName;20 - (NSString *) firstName;21 22 - (void) setLastName: (NSString *) m_lastName;23 - (NSString *) lastName;24 25 26 @end
// 2 //  MyClass.m 8  9 #import "MyClass.h"10 11 12 @implementation MyClass13 14 - (void) setFirstName:(NSString *)m_firstName{15    16     firstName = m_firstName;17 }18 - (NSString *) firstName{19  return firstName;20 }21 22 - (void) setLastName: (NSString *) m_lastName{23     lastName = m_lastName;24 }25 - (NSString *) lastName{26  return lastName;27 }28 29 30 - (NSString *) description31 {   32  if (firstName == nil || lastName == nil) {33  return @"No Name found.";34     } else {35  return [NSString stringWithFormat:@"%@ %@",36             firstName,lastName];37     }38    39 }40 41 @end
1 /* 2  * 示例字典(NSDictionary,NSMutableDictionary)操作 3  * 4  * Elf Sundae  10/22/2010 5  */ 6  7 #import <Foundation/Foundation.h> 8 #import "MyClass.h" 9 10 int main (int argc, const char * argv[]) {11     NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];12    13  // 创建字典:dictionaryWithObjectsAndKeys:14     MyClass *my1 = [MyClass new];15     MyClass *my2 = [MyClass new];16     MyClass *my3 = [MyClass new];17     MyClass *my4 = [MyClass new];18    19     NSDictionary *myClassDict;20     myClassDict = [NSDictionary dictionaryWithObjectsAndKeys:21               my1, @"my1",22               my2, @"my2",23               my3, @"my3",24               my4, @"my4", nil];25  // 获取值 objectForKey26     MyClass *sub = [myClassDict objectForKey: @"my3"];27  if (sub == nil) {28         exit(1);29     }30     [sub setFirstName:@"Elf"];31     [sub setLastName:@"Sundae"];32    33     NSLog(@"修改数据: %@",sub);34    35  // 遍历字典36     NSLog(@"***遍历字典myClassDict如下:");37  for (id key in myClassDict)38     {39         NSLog(@"key: %@ ,value: %@",key,[myClassDict objectForKey:key]);40     }41     NSLog(@"***遍历字典myClassDict结束。");42    43  // MARK: ***  添加新元素  ***   44  // NSDictionary无法添加或删除元素,可以使用NSMutableDictionary.45     NSMutableDictionary *myNewDict = [NSMutableDictionary dictionary];46  // 将原有字典添加到新字典的一对元素47  //[myNewDict setObject:myClassDic forKey:@"旧的不可变字典myClassDic"];48    49  // 遍历添加已有数据(原字典)50  for (id key in myClassDict)51     {52         [myNewDict setObject: [myClassDict objectForKey:key]53                   forKey:key];54     }55    56     NSString *newkey = @"newKey";57     NSString *newValue = @"This is a new Value.";58     [myNewDict setObject:newValue forKey:newkey];59    60  // 遍历myNewDict61     NSLog(@"***遍历字典myNewDict如下:");62  for (id key in myNewDict)63     {64         NSLog(@"key: %@ ,value: %@",key,[myNewDict objectForKey:key]);65     }66     NSLog(@"***遍历字典myNewDict结束。");67    68  // 删除元素69     [myNewDict removeObjectForKey: @"newKey"];70    71  // 遍历myNewDict72     NSLog(@"***遍历字典myNewDict如下:");73  for (id key in myNewDict)74     {75         NSLog(@"key: %@ ,value: %@",key,[myNewDict objectForKey:key]);76     }77     NSLog(@"***遍历字典myNewDict结束。");78    79     [pool drain];80  return 0;81 }

输出结果:
*遍历字典myClassDict如下:
key: my3 ,value: Elf Sundae
key: my4 ,value: No Name found.
key: my1 ,value: No Name found.
key: my2 ,value: No Name found.
*遍历字典myClassDict结束。
*遍历字典myNewDict如下:
key: newKey ,value: This is a new Value.
key: my3 ,value: Elf Sundae
key: my4 ,value: No Name found.
key: my1 ,value: No Name found.
key: my2 ,value: No Name found.
*遍历字典myNewDict结束。
*遍历字典myNewDict如下:
key: my3 ,value: Elf Sundae
key: my4 ,value: No Name found.
key: my1 ,value: No Name found.
key: my2 ,value: No Name found.
*遍历字典myNewDict结束。

0 0