NSString

字符串比较

NSString *str =@"abc";
NSString *str2 = @"ADC";
NSComparisionResult res = [str1 compare:str2];
// NSOrderedAscending / NSOrderedDescending / NSOrderedSame
res = [str1 compare:str2 options:NSCaseInsensitiveSearch];

字符串拼接

NSString *str =@"abc";
NSString *str2 = @"ADC";

NSString* res = [str stringByAppendingString:str2];
// res = @"abcADC"

字符串内容比较(upper lower case sensitive)

[str0 isEqualToString:str1]

字符串前后缀检查 prefix

NSString*url = @"http://www.fb.com/1.png";
BOOL isAddress = [url hasPrefix:@"http://"];
BOOL isImage = [url hasSuffix:@"png"];

字符串查找

//首次出现的位置: RangeOfString
//返回值:NSRange (location, length)
//找不到用length 是否为0判断,因为找不到location返回NSNotFound
NSString* str1 = @"abc";
NSString* str2 = @"ereabcc";
NSRange index = [str2 rangeOfString:str1];
NSLog(@"%zd, %zd", index.location, index.length);

//NSRange:
NSRange range = NSMakeRange(5, 4);

//NSRange 转换为字符串
NSString* str = NSStringFromRange(range);

字符串截取

(NSString *)substringFromIndex:(NSUInteger)from; 从指定位置from开始(包括
指定位置的字符)到尾部

(NSString *)substringToIndex:(NSUInteger)to; 从字符串的开头一直截取到指
定的位置to,但不包括该位置的字符

(NSString *)substringWithRange:(NSRange)range; 按照所给出的NSRange从
字符串中截取子串
NSString *url = @"http://www.facebook.com";

NSLog(@"%@", [url substringFromIndex:7]);
 // www.facebook.com
NSLog(@"%@", [url substringToIndex:7]);
 // http:/ 
NSRange range = NSMakeRange(11, 8); 

NSLog(@"%@", [url substringWithRange:range]); // facebook

字符串替换

NSString* str ="abc-dcb";
str = [str stringByReplacingOccurrencesOfString:@"-" withString:@"."];

字符串分割

//定义字符串
NSString*str =@"400-588-1688";
NSArray *arr = [str componentsSeparatedByString:@"-"];
NSLog(@"%@",arr);

类名转字符串

NSStringFromClass([xxx class]);

字符串转类型

NSClassFromString(@"UIApplication");

字符串其他用法

//获取字符 及 ASCII
NSString *str ="abc";
unichar c = [str characterAtIndex:i];
int i = c;

//字符串转整型
//intValue, floatValue, doubleValue
NSString *str =@"-123";
NSInteger num = [str intValue];//-123

NSURL vs NSString

NSArray

  1. 只能存放对象,

  2. 不能存放基本数据类型:int float double char enum struct

  3. 不能存放nil(用[NSNULL null]替代)

//获取对象
NSLog(@"%@", [arr2 objectAtIndex:2]);
NSLog(@"%@", arr2[5]);

//获取位置,没有反回NSNotFound
NSLog(@"%zd", [arr2 indexOfObject:@2]);
if ([arr2 indexOfObject:@33] == NSNotFound) {
    NSLog(@"nothing");
}
//是否包涵
if ([arr2 containsObject:@2]) {
    NSLog(@"确实包涵2");
}
//firstObject, lastObject

数组存放字典

NSArray* labels = @[
    @{
        @"icon":@"1.png",
        @"name":@"sdf"
    },
    @{
        @"icon":@"1.png",
        @"name":@"kjh"
    },
    @{
        @"icon":@"1.png",
        @"name":@"kml"
    }
];

遍历

三种方式:

  • 普通循环

  • 快速枚举: for (NSString* str in arr) {}

  • block: enumUsingWithBlock();

//NSArray
NSArray *arrData = @[@1,@2,@3,@4];

// 1.Classical
for (int i=0; i< [arrData count]; i++){
   NSLog(@"[%d]:%@",i,arrData[i]);
}

// 2.Fast iteration
for (id element in arrData){
   NSLog(@"%@",element);
}

// 3.Blocks
[arrData enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
   NSLog(@"[%lu]:%@",idx,obj);
   // Set stop to YES in case you want to break the iteration
}];

数组读写文件

//创建一个数组
NSArray *arr = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil];
//写入数据到文件中
if ([arr writeToFile:@"/Users/liwei/Desktop/arr.plist" atomically:YES]) {
    NSLog(@"写入成功!"); 
}

//创建一个数组,读取xml文件

NSArray *arr = [NSArray arrayWithContentsOfFile:@"/Users/liwei/D
esktop/arr.xml"];
NSLog(@"%@",arr); 

//创建一个数组,读取plist

NSArray *arr = [NSArray arrayWithContentsOfFile:@"/Users/liwei/D
esktop/arr.plist"]; 
NSLog(@"%@",arr);

数组冒充字典:

//初始化
NSMutableArray *dict = [NSMutableArray array];
NSMutableArray *nums = [numbers mutableCopy];

//新增
[dict addObject:@(-1)]

//移除
[dict removeObject:@(2)];

//插入元素
[arryM insertObject:@"AOL" atIndex:1];

//交换
[nums exchangeObjectAtIndex:i withObjectAtIndex:j];

//第一个,最后一个
firstObject lastObject

//排序
[unsortArr sortedArrayUsingSelector:@selector(compare:)];

//遍历数组
for (id num in dict) {
    [res addObject:num];
}

字典:可以数组对比

快速创建字典

@{@"zs" : @"zhangsan", @"ls" : @"lisi", @"ww" : @"Wangwu"};

NSMutableDictionary *dict = [NSMutableDictionary dictionary];

//是否存在
if (dict[@(tmp)] != nil) {
}


//增加新的元素
dict[numbers[i]] = @(i);

//移除字典
[dict removeObjectForKey:numbers[i]];
[dict removeAllObjects];

//遍历字典 
//遍历的是key值
for (id key in dict) {
    if ([dict[key] integerValue] == arrs.count) {
        [res addObject:key];
    }
}

[dict enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id
_Nonnull obj, BOOL * _Nonnull stop) {
    xxx;
}];

NSMutableArray

in the case of strings, arrays, and dictionaries, only immutable variants can be created with the literal syntax. If a mutable variant is required, a mutable copy must be taken, like so:

NSMutableArray*mutable = [@[@1, @2, @3, @4, @5]mutableCopy];

NSSet

// init
NSSet *set = [NSSet setWithObjects:@"red",@"black", @"orange", nil];

// containsObject
if ([set containsObject:@"red"]) {
    NSLog(@"exist red");
}

// add/remove
NSMutableSet *set2 = [NSMutableSet set];
[set2 addObject:@"INTEL"];
[set2 addObject:@"APPLE"];
[set2 removeObject:@"APPLE"];
NSLog(@"%@", set2);

//remove duplicate
- (void) getUniqueArray {
    NSArray *nums = @[@1, @2, @3, @4, @2, @1];
    NSArray *uniNums = [[NSSet setWithArray:nums] allObjects];
    NSLog(@"%@", uniNums);
}

results matching ""

    No results matching ""