iOS Foundation 基础框架
2016-07-03 22:07
453 查看
基本的函数的使用,不多做介绍,照着敲一遍代码就明白了。。
2. 需要手动释放内存
同一个数组可以存储不同类型的对象
内存空间依然连续
不论是什么对象,数组元素都是一个指针
数组长度
数组元素判断
数组最后一个元素
数组第一个元素
数组元素查找
数组元素位置
for in 快速枚举(需要数组元素类型一致)
枚举器(迭代器)
addObjectsFromArray
removeAllObjects
removeLastObject
removeOjbect
removeOjbectAtIndex
使用键(key)值(value)对(KVC, key value coding, 键值编码)
注意
添加或删除数组或字典的元素时,count 会随之变化
对象释放后,每个值都会 release
NSObject 基类
1. NSString 字符串类
1. NSSttring
1. C 风格字符串和 OC 风格字符串之间的转换
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { char *str1 = "a string"; NSString *str2 = [NSString stringWithUTF8String:str1]; NSLog(@"str2 = %@", str2); NSString *str3 = @"string"; NSLog(@"str4 = %s", [str3 UTF8String]); } return 0; }
2. 创建字符串
1. 系统帮我们实例化对象和释放内存NSString *str = @"string";
2. 需要手动释放内存
NSString *str = [[NSString alloc] init];
NSString *str = @"string";
3. 格式化字符串
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { int a = 5; int b = 10; NSString *str = [NSString stringWithFormat:@"a = %d b = %d", a, b]; NSLog(@"str = %@", str); } return 0; }
4. 拼接字符串
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str1 = @"string1"; NSString *str2 = @"string2"; NSString *str3 = [str1 stringByAppendingString:str2]; NSLog(@"str3 = %@", str3); } return 0; }
5. 大小写转换
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str1 = @"STRing"; NSString *str2 = [str1 lowercaseString]; NSLog(@"str2 = %@", str2); NSString *str3 = [str1 uppercaseString]; NSLog(@"str3 = %@", str3); } return 0; }
6. 字符串前缀、后缀
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str = @"www.google.com"; BOOL hasPreFix = [str hasPrefix:@"www"]; if (hasPreFix) NSLog(@"has prefix"); else NSLog(@"not have prefix"); BOOL hasSufFix = [str hasSuffix:@"com"]; if (hasSufFix) NSLog(@"has suffix"); else NSLog(@"not have suffix"); } return 0; }
7. 字符串相等性判断
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str1 = @"www.apple.com"; NSString *str2 = @"www.aple.com"; if ([str1 isEqualToString:str2]) NSLog(@"equal"); else NSLog(@"not equal"); } return 0; }
8. 字符串比较
NSComparisonResult 方法9. 字符串分割
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str1 = @"a, b, c, d"; NSArray *strArray = [str1 componentsSeparatedByString:@", "]; for( NSString *str in strArray ) { NSLog(@"str = %@", str); } } return 0; }
10. 字符串截取
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str = @"0123456789"; NSRange range = NSMakeRange(1, 5); NSString *str1 = [str substringWithRange:range]; NSLog(@"str1 = %@", str1); NSString *str2 = [str substringFromIndex:3]; NSLog(@"str2 = %@", str2); NSString *str3 = [str substringToIndex:7]; NSLog(@"str3 = %@", str3); } return 0; }
11. 字符串拆分
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str = @"0123456789"; for (int i = 0; i < [str length]; i++) { NSLog(@"%c", [str characterAtIndex:i]); } } return 0; }
12. 字符串查找
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str = @"ab cd ef cd gh ijk"; NSRange range = [str rangeOfString:@"cd"]; NSLog(@"range.location:%ld range.length:%ld", range.location, range.length); } return 0; }
13. 字符串替换
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str = @"hello there, hello here"; NSString *str1 = [str stringByReplacingCharactersInRange:NSMakeRange(0, 5) withString:@"你好"]; NSLog(@"str1 = %@", str1); NSString *str2 = [str stringByReplacingOccurrencesOfString:@"hello" withString:@"你好"]; NSLog(@"str2 = %@", str2); } return 0; }
14. 读取文件
使用 NSURL 路径类读取网络和本地文件#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str = @"http://blog.csdn.net/username"; NSURL *httpURL = [NSURL URLWithString:str]; NSURL *fileURL = [NSURL fileURLWithPath:str]; NSString *httpStr = [NSString stringWithContentsOfURL:httpURL encoding:NSUTF8StringEncoding error:nil]; NSLog(@"httpStr = %@", httpStr); NSString *fileStr = [NSString stringWithContentsOfFile:@"/Users/username/Documents/test.txt" encoding:NSUTF8StringEncoding error:nil]; NSLog(@"fileStr = %@", fileStr); } return 0; }
15. 写入文件
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str = @"write file"; BOOL rtn = [str writeToURL:@"/Users/username/Documents/demo.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil]; if (rtn) NSLog(@"write success"); else NSLog(@"write fail"); } return 0; }
2. NSMutableString 可变字符串
可变字符串是字符串类的子类,因此,字符串类的方法可以用于可变字符串,反之则不行。1. 追加字符串
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSMutableString *str = [[NSMutableString alloc] initWithCapacity:10]; [str setString:@"hello"]; [str appendString:@" world"]; int a = 10; [str appendFormat:@" %d", a]; NSLog(@"str = %@", str); } return 0; }
2. 替换字符串
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSMutableString *str = [[NSMutableString alloc] initWithCapacity:10]; [str setString:@"hello world"]; NSRange range = [str rangeOfString:@"world"]; [str replaceCharactersInRange:range withString:@"iOS"]; NSLog(@"str = %@", str); } return 0; }
3. 插入字符串
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSMutableString *str = [[NSMutableString alloc] initWithCapacity:10]; [str setString:@"hello world"]; [str insertString:@"a " atIndex:6]; NSLog(@"str = %@", str); } return 0; }
4. 删除字符串
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSMutableString *str = [[NSMutableString alloc] initWithCapacity:10]; [str setString:@"hello world"]; NSRange range = [str rangeOfString:@"ello"]; [str deleteCharactersInRange:range]; NSLog(@"str = %@", str); } return 0; }
2. 数组
数组元素只能是对象同一个数组可以存储不同类型的对象
内存空间依然连续
不论是什么对象,数组元素都是一个指针
1. NSArray
1. 基本操作
数组初始化数组长度
数组元素判断
数组最后一个元素
数组第一个元素
数组元素查找
数组元素位置
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSArray *array = [[NSArray alloc] initWithObjects:@"1", @"2", @"3", @"4", @"5", nil]; int count = (int) array.count; NSLog(@"count = %d", count); BOOL ishas = [array containsObject:@"2"]; if (ishas) { NSLog(@"contain"); } else { NSLog(@"not contain"); } NSString *str = [array lastObject]; NSLog(@"str = %@", str); str = [array firstObject]; NSLog(@"str = %@", str); str = [array objectAtIndex:3]; NSLog(@"str = %@", str); int index = (int) [array indexOfObject:@"3"]; NSLog(@"index = %d", index); } return 0; }
2. 数组的遍历
for 循环for in 快速枚举(需要数组元素类型一致)
枚举器(迭代器)
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSArray *array = [[NSArray alloc] initWithObjects:@"1", @"2", @"3", @"4", @"5", nil]; for (int i = 0; i < array.count; i++) { NSString *str1 = [array objectAtIndex:i]; NSLog(@"array[%d] = %@", i, str1); } for (NSString *str2 in array) { NSLog(@"array = %@", str2); } NSEnumerator *enumerator; enumerator = [array objectEnumerator]; id thing; while (thing = [enumerator nextObject]) { NSLog(@"%@",thing); } } return 0; }
2. Multable Array 可变数组
1. 添加和删除
addObjectaddObjectsFromArray
removeAllObjects
removeLastObject
removeOjbect
removeOjbectAtIndex
2. 交换数组元素位置
exchangeObjectAtIndex:(NSUInteger) withObjectAtIndex:(NSUInteger)3. 字典
1. NSDictionary
存储内存空间不连续使用键(key)值(value)对(KVC, key value coding, 键值编码)
注意
添加或删除数组或字典的元素时,count 会随之变化
对象释放后,每个值都会 release
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSDictionary *dict1 = [NSDictionary dictionaryWithObject:@"1" forKey:@"a"]; NSLog(@"dict1 = %@", dict1); NSDictionary *dict2 = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"1", @"2", @"3", nil] forKeys:[NSArray arrayWithObjects:@"a", @"b", @"c", nil]]; NSLog(@"dict2 = %@", dict2); NSDictionary *dict3 = @{@"a":@"1", @"b":@"2", @"c":@"3"}; NSLog(@"dict3 = %@", dict3); int count = (int)[dict2 count]; NSLog(@"count = %d", count); NSString *value1 = [dict2 valueForKey:@"b"]; NSLog(@"value1 = %@", value1); NSString *value2 = [dict2 objectForKey:@"b"]; NSLog(@"value2 = %@", value2); NSArray *allValues = [dict2 allValues]; NSLog(@"allValues = %@", allValues); NSArray *allKeys = [dict2 allKeys]; NSLog(@"allKeys = %@", allKeys); NSArray *array = [dict2 objectsForKeys:[NSArray arrayWithObjects:@"a", @"b", @"d", nil] notFoundMarker:@"not found"]; NSLog(@"array = %@", array); for (NSString *key in dict2) { NSLog(@"%@ = %@", key, [dict2 objectForKey:key]); } NSEnumerator *en = [dict2 keyEnumerator]; id key = nil; while (key = [en nextObject]) { NSLog(@"key = %@", key); } } return 0; }
2. NSMutbaleDictionary
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; [dict setObject:@"1" forKey:@"a"]; [dict setObject:@"2" forKey:@"b"]; [dict setObject:@"3" forKey:@"c"]; [dict setObject:@"4" forKey:@"d"]; NSLog(@"dict = %@", dict); [dict removeObjectForKey:@"a"]; NSLog(@"dict = %@", dict); [dict removeObjectsForKeys:[NSArray arrayWithObjects:@"b", @"d", nil]]; NSLog(@"dict = %@", dict); [dict removeAllObjects]; NSLog(@"dict = %@", dict); } return 0; }
2. 参考
iOS 基础入门之 Foundation 框架初体验相关文章推荐
- 数据库链接字符串查询网站
- Flex字符串比较 还有Flex字符串操作
- 插件管理框架 for Delphi(一)
- Ruby中创建字符串的一些技巧小结
- ASP下经常用的字符串等函数参考资料
- 将字符串小写转大写并延时输出的批处理代码
- 将字符串转换成System.Drawing.Color类型的方法
- Lua源码中字符串类型的实现
- Lua性能优化技巧(四):关于字符串
- 字符串聚合函数(去除重复值)
- Ruby中的字符串编写示例
- 总结的5个C#字符串操作方法分享
- sqlserver中求字符串中汉字的个数的sql语句
- sql server字符串非空判断实现方法
- C#算法函数:获取一个字符串中的最大长度的数字
- VBS的字符串及日期操作相关函数
- C#实现将千分位字符串转换成数字的方法
- jquery 删除字符串最后一个字符的方法解析
- PowerShell实现在字符串中查找大写字母
- PowerShell中使用Out-String命令把对象转换成字符串输出的例子