OC基本对象类型

来源:互联网 发布:淘宝怎样找货源 编辑:程序博客网 时间:2024/06/12 21:45
//NSNumber的使用


创建一个NSNumber对象

NSNumber *monthNumber = [NSNumbernumberWithInt:10];//使用类方法创建

NSNumber *lengthNumber =[ [NSNumber alloc]initWithFloat:10.8];//使用实例方法创建

//还原成基本数据类型

int month = [monthNumber intValue];

float length = [lengthNumber floatValue];


//NSString的使用

//创建一个字符串常量

NSString *string1 = @”这是一个字符串常量”;

//创建一个空的字符串

NSString *string2 = [[NSString alloc]init]; //实例方法

NSString *string3 = [NSString string];    //类方法

//创建一个字符串创建的实在常量区,不在堆区

NSString *string4 = [[NSString alloc]initWithString:@”abc”];

NSString *string5 = [NSStringstringWithString:@”abc”];

//创建一个格式化的字符串创建在堆区

NSString *string6 = [[NSString alloc]initWithFormat:@”abc”];

NSString *string7 = [NSStringstringWithFormat:@”abc”8];

//比较字符串

//以下输出为same(比较的是内容)

If (string4 isEqualToString:string5){

       NSLog(@”same”);

}else{

       NSLog(@”different”);

}

//以下输出为same(比较的是是否为同一个指针地址)

//string6和string7创建在常量区,所以指向的同一块的内存地址

If (string6 == string7){

       NSLog(@”same”);

}else{

       NSLog(@”different”);

}

//以下输出为same(比较的是内容)

If (string6 isEqualToString:string7){

       NSLog(@”same”);

}else{

       NSLog(@”different”);

}

//以下输出为defferent(比较的是是否为同一个指针地址)

//string6和string7创建在堆区,所以指向的不同的内存地址

If (string6 == string7){

       NSLog(@”same”);

}else{

       NSLog(@”different”);

}

//比较字符串大小

NSString *string8 = [[NSString alloc]initWithFormat:@”a”];

NSString *string9 = [[NSString alloc]initWithFormat:@”b”];

NSComparisonResult result = [string8caseInsensitiveCompare:string9];

//NSComparisonResult是一个枚举类型

//打印出来result是-1,表示升序。

//字符串长度

[string8 length];

//字符串对象的转换

NSString *string10 = @”2.46”;

NSLog(@”%f”, [string floatValue]);

//字符串的大小写

NSString *string11 = @”hello world”;

NSLog(@”upper:%@”, [string11uppercaseString]);//转换为大写HELLO WORLD

NSLog(@”lower:%@”, [string11lowercaseString]);//转换为小写hello world

NSLog(@”capital:%@”,[string11capitalcaseString]);//首字母大写Hello World

//字符串转换成数组

NSString *string12 = @”abc bcd xyz”;

NSArray *array = [string12componentsSeparatedByString:@” ”];//以空格为分割线

NSLog(@”array : %@”, array);//打印出abc bcd xyz

//字符串的截取

NSString *string13 = [NSStringstringWithFormat:@”abcdefg”];

//从字符串的开头一直截取到指定的位置

NSString *string14 = [stringsubstringToIndex:2];//打印出ab

NSString *string15 = [stringsubstringFromIndex:2];//打印出cdefg

//根据范围截取

NSRange range;

range.location = 4;

range.length = 2;

NSString *subString3 = [string13substringWithRange:range];//打印出ef

//字符串的拼接

NSString *string16 = @”abc”;

NSString *string17 = @”xyz”;

NSString *appString1 = [[NSString alloc]initWithFormat:@”%@%@”, string16, string17];

NSString *appString2 = [string16stringByAppendFormat:@”%@”, string17];

NSString *appString2 = [string16stringByAppendString, string17];

//查询字符串对象

NSString *link = @”asdastarget=_blankddasd”;

NSRange range = [link rangeOfString@”target=_blank”];

If (range.location !=NSNotFound){//NSNotFound为整形最大值

NSLog(@”string 找到了”);

}


//NSMutableString的使用

NSMutableString *mutableString1 =[[NSMutableString alloc] initWithFormat:@”abc”];

//插入

[mutableString1 insertString:@”xyz”atIndex:3];//打印出abcxyz

//替换

[mutableString1replaceCharactersInRange:NSMakeRange(0, 3) withString:@”efg”];//打印出efgxyz

//删除

[mutableString1deleteCharactersInRange:NSMakeRange(0,3)];//打印出xyz


//NSArray的使用

//数组的创建

//类方法

NSArray *array1 = [NSArrayarrayWithObject:@”One”];

NSArray *array2 = [NSArrayarrayWithObjects:@”One”, @”Two”, nil];

NSArray *array3 = [NSArrayarrayWithArray:array2];

//实例方法

NSArray *array4 = [[NSArray alloc]initWithArray:array1];

//获取数组中元素的个数和访问

Int count = [array2 count];

//访问元素的内容

NSString *string1 = [array2 objectAtIndex:1];//Two

//追加数组中的内容

NSArray *array5 = [array2 arrayByAddObject:@”end”];

//用指定的字符串将数组中的元素连接起来

NSString *string2 = [array5componentsJoinedByString:@”,”];//One,Two,end

//数组中是否有某对象

BOOL isContain = [array5 containObject:@”end”];

//查询指定有个对象的位置

NSInteger index = [array5 indexOfObject:@”end”];返回2


//NSMutableArray的使用

NSMutableArray *mutableArray1 =[/NSMutableArray array];

NSMutableArray *mutableArray2 =[/NSMutableArray arrayWithCapacity:5];

NSMutableArray *mutableArray3 =[/NSMutableArray arrayWithObjects:@”One”,@”Two”,nil];

//增加

[mutableArray3 addObject:@”Three”];

//插入

[mutableArray3 insertObject:@”Three”atIndex:2];

//删除

[mutableArray3 removeLastObject];

[mutableArray3 removeObjectIndex:3];

NSMutableArray*mutableArray3=[NSMutableArrayarrayWithObjects:@”One”,@”Two”,@”Three”nil];

NSArray *deleteArray = [NSArray arrayWithObject:s@”One”,@”Two”,nil];

[mutableArray3removeObjectInArray:deleteArray];//打印mutableArray3只剩Three

//替换

[mutableArray3 replaceObjectAtIndex:0withObject:”replace”];


//NSDictionary的使用

NSDictionary *dic1 = [NSDictionarydictionaryWithObject:@”value” forKey:@”k1”];

NSDicrionary *dic2 = [NSDictionarydictionaryWithObjectsAndKeys:@”v1”, @”k1”, @”v2”, @”k2”, nil];

NSDictionary *dic3 = [NSDictionarydictionaryWithDictionary:dic1];

//获取字典数量

NSInteger count = [dic2 count];

//获取value

NSString *string = [dic2 objectForKey:@”k2”];//打印v2

//获取所有key

NSArray *keyArray = [dic2 allKeys];

//获取所有value

NSArray *valueArray = [dic2 allValues];
 

//NSMutableDictionary的使用

NSMutableDictionary *mutableDic =[[NSMutableDictionary alloc] initWithObjectsAndKeys:@”v1”, @”k1”, @”v2”, @”k2”,@”v3”, @”k3”, @”v4”, @”k4”, @”v5”, @”k5”,nil];

NSDictionary *dic4 = [NSDicrionarydictionaryWithObject:@”v6” forKey:@”k6”];

//添加

[mutableDic addEntriesFromDictionary];        //第一种

[mutableDic setValue:@”object” forKey:@”key”];//第二种

//删除

[mutableDic2 removeObjectForKey:@”k4”];

NSArray *keys = [NSArrayarrayWithObjectObjects:@”k1”, @”k2”, @”k3”, nil];

[mutableDic removeObjectsForKeys:keys];

 //遍历字典

For (int index = 0; index < [mutableDiccount]; index ++)

{
      NSString*object = [[mutableDic objectForKey:[mutableDic allKeys] objectAtIndex:index];
}

//快速枚举
For (id key in mutableDic){
       NSString*object = [mutableDic objectForKey:key];
}

//使用枚举类型
NSEnumerator *enumerator = [mutableDickeyEnumerator];
id key;
while (key = [enumerator nextObject]){
       idobject = [mutableDic objectForKey:key];
}


//NSSet的使用

NSSet *set1 = [NSSet setWithObjects:@”1”, @”2”,nil];

NSSet *set2 = [NSSet alloc]initWithObjects:@”3”, @”4”, @”2”, nil];

//获取count

Int count = [set2 count];

//转化为数组

NSArray *objects = [set1 allObjects];

//获取任意一个对象

id object = [set2 anyObject];

//是否包含某个元素

BOOL isContain = [set2 containObject:@”1”];

//集合间是否存在交际

BOOL isIntersect = [set1 intersectsSet:set2];

//是否匹配

BOOL isEqual = [set1 isEqualToSet:set2];

//是否是一个集合的子集

BOOL isSub = [set1 isSubsetOfSet:set1];
 

//NSMutableSet的使用

NSMutableSet *set1 = [MSMutableSet set];

NSMutableSet *set2 = [NSMutableSetsetWithObjects:@”1”, @”2”,nil];

NSMutableSet *set3 = [NSMutableSetsetWithObjects:@”a”. @”2”, nil];

//集合2减去集合3中的元素,元素2最后元素只有一个,且为1

[set2 minusSet:set3];

//集合2与集合3中的元素,集合2最后的元素只有一个,且为2

[set2 intersectSet:set3];

//集合2与集合3的元素的并集,集合2最后元素只有3个,且为1,2,a

[set1 unionSet:set3];

//将空集合1设置为集合3中的内容

[set1 setSet:set3];

//根据数组的内容删除集合中的对象

[set2 addObjectsFromArray:array];

[set2 removeObject:@”1”];

[set2 removeAllObjects];


IOS之NSArray 中调用的方法详解(1)

下面的例子以 
    NSArray *array = [NSArray arrayWithObjects:@"wendy",@"andy",@"tom",@"jonery",@"stany", nil];
1、获取数组中总共有多少个对象。
- (NSUInteger)count;
    NSLog(@"%d",[array count]);   2
2、获取数组中下标对应的元素对象.(下标是从0开始)
- (id)objectAtIndex:(NSUInteger)index;
3、在当前数据中追加一个新的对象,并且返回一个新的数据对象(新的数组对象和被追加的对象,是两个不同的数组对象)。
- (NSArray *)arrayByAddingObject:(id)anObject;
4、在当前的数组中追加一个新的数据,并且返回一个新的数组对象。
- (NSArray *)arrayByAddingObjectsFromArray:(NSArray *)otherArray;
5、使用当前的数组生成一个字符串,新生成的字符串使用提供的separator 字符进行分割。
- (NSString *)componentsJoinedByString:(NSString *)separator;
[array compontsJoinedByString:@","];
运行结果: wendy,andy,tom,jonery,stany
6、检测数据中是否包含指定的对象元素
- (BOOL)containsObject:(id)anObject;
[array containsObject:@"tom"]; YES
7、使用当前的数组生成字符串。可以重写description 改变生成的字符串。相当于java 中的toString 方法。
- (NSString *)description;
运行结果
 (
    wendy,
    andy,
    tom,
    jonery,
    stany
)
8、根据设置的locale 进行连接数组
- (NSString *)descriptionWithLocale:(id)locale;
- (NSString *)descriptionWithLocale:(id)locale indent:(NSUInteger)level;

9、两个数组的第一个元素是否相同,如果相同,则返回 数组中,第一个元素的字符串,反之,返回null 对象
- (id)firstObjectCommonWithArray:(NSArray *)otherArray;
10、 从数组中获取 NSRange 对象的数据存放到objects 中,NSRange 的数据标示从location,开始后面length 个数据
- (void)getObjects:(id__unsafe_unretained [])objects range:(NSRange)range;
    NSArray *array = [NSArray arrayWithObjects:@"wendy",@"andy",@"tom",@"jonery",@"stany",@"张山名称",@"asdta", nil];
    
    NSRange range = NSMakeRange(1, 5);
    
    id *objects;
    
    objects = malloc(sizeof(id) * range.length);
    
    [array getObjects:objects range:range];
    
    for(int i = 0; i < range.length; i++){
        NSLog(@"%@",objects[i]);
    }
    
    free(objects);
    
    运行的结果
    
andy
tom
jonery
stany
11、 判断制定的anObject 对象是否存在数组中如果存在返回,对象所在的下标
- (NSUInteger)indexOfObject:(id)anObject;
如果不存在,返回的NSUInteger 与 NSNotFund 相同
NSUIndex index = [array indexOfObject:@"stan"];
if(index == NSNotFound)
{
对象不在数组中        
}
    
11-1、 判断制定的元素,是否在数组中,数组查询的位置,是从range.location 的位置开始,到range.length 的长度结束。
- (NSUInteger)indexOfObject:(id)anObject inRange:(NSRange)range;
如果数据存在,返回指定的下标,如果不存在,则返回NSNotFund 。
实质是使用isEqual 进行比较

12、
同上面两个方法一项,测试指定的对象是否在数组中不同的是,这里使用指针进行比较
- (NSUInteger)indexOfObjectIdenticalTo:(id)anObject;
如果数据存在,返回指定的下标,如果不存在,则返回NSNotFund 。
- (NSUInteger)indexOfObjectIdenticalTo:(id)anObject inRange:(NSRange)range;

13、比较两个数组是否相同 ,数组长度相同,并且相同位置上的元素也相同。
- (BOOL)isEqualToArray:(NSArray *)otherArray;
14、返回最有一个元素,如果一个数组的长度为0 返回的对象为nil
- (id)lastObject;
15、使用数组返回一个 NSEnumerator 对象,这个对象类似与一个指针,可以用来遍历 整个数组 指针从前向后遍历
- (NSEnumerator *)objectEnumerator;
示例如下
    NSEnumerator *enu = [array objectEnumerator];
    
    id *obj;
    while (obj = enu.nextObject) {
        NSLog(@"obj===%@==",obj);
    }
16、 返回一个NSEnumerator 对象,这个对象类似一个指针,可以用来遍历真个数据,所不同的是,这个指针,是从后向前遍历。    
- (NSEnumerator *)reverseObjectEnumerator;
17、生成一个NSData 的对象,主要是用来进行数组的排序。 在下面的方法中使用这个对象
- (NSData *)sortedArrayHint;
18、 进行数组的排序
- (NSArray *)sortedArrayUsingFunction:(NSInteger (*)(id,id, void *))comparator context:(void *)context;
这个方法类似苹果实现了一个简单的 排序方法。但是实现的规则需要自己进行处理。
类似的方法如下。 首先提供一个 普通的排序算法,函数和c 的方法类似
NSInteger sortType(id st,id str,void *cha)
{
    NSString *s1 = (NSString *)st;
    NSString *s2 = (NSString *)str;
    if(s1.length > s2.length)
    {
        return NSOrderedAscending;
    }else if(s1.length < s2.length)
    {
        return NSOrderedDescending;
    }
    
    return NSOrderedSame;
}
   NSArray *array = [NSArray arrayWithObjects:@"wendy",@"andy",@"tom",@"test", nil];
   
   NSArray *a = [array sortedArrayUsingFunction:sortType context:nil];
NSLog(@"a=%@",a);
NSArray 为需要排序的数组,返回一个排序完成的数组,再执行osrtedArrayUseingFunction 方法时会,会自动调用上面的sortType 方法,并且,可以按照你
的需要调整上面的规则

19、和上面的方法类似,也是苹果用来进行排序的。所不同的是,需要传入一个NSData 的数据。
- (NSArray *)sortedArrayUsingFunction:(NSInteger (*)(id,id, void *))comparator context:(void *)context hint:(NSData *)hint;
    NSData *dat = [array sortedArrayHint];
    NSArray *a = [array sortedArrayUsingFunction:sortType context:nil hint:dat];
    
    NSLog(@"a=%@",a);
   
0 0