黑马程序员———Objctive-C———【NSDictionary、NSMutableDictionary、NSFileManager】

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

——————————————————————————————————————————————————————————————————

NSDictionary简写、文件操作、使用注意
(1)简写
简写创建略.
简写获取元素:
以前:[dict objectForKey:@"name"];
现在:dict[@"name"];

(2)文件操作
将字典写入文件中
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
- (BOOL)writeToURL:(NSURL *)atomically:(BOOL)atomically;

读取字典
+ (NSDictionary)dictionaryWithContentsOfFile:(NString *)filepath;

(3)从外部文件写读(难点)
案例:省-市
NSArray *lnArr=[NSArray arrayWithObjects:@"dalian",@"shenyang",nil];
NSArray *hbArr=[NSArray arrayWithObjects:@"baoding",@"shijiazhuang",nil];
NSDictionary *citys=[NSDictionary dictionaryWithObjectsAndKeys:lnArr,@"ln",hbArr,@"hb",nil];
[citys writeToFile:@"/Users/zhaoxiaohu/Desktop/citys.plist",atomically:YES];
//读取citys.plist
NSDictionary *cityDict=[NSDictionary dictionaryWithContentsOfFile:@"/Users/zhaoxiaohu/Desktop/citys.plist"];
[cityDict enumerateKeysAndObjectsUsingBlock:^(id key,id obj,BOOL *stop){
    //打印省-市
    NSLog(@"key:%@,value:%@",key,obj);
    //打印出的内容是:key:hb,value:{baoding,shijiazhuang}

    //如果想遍历所有的市
    for(NSString *str in obj){
        NSLog(@"city=%@",str);
    }
}];
//获取每个数组
NSArray *arr=cityDict[@"ln"];
NSLog(@"%@",[arr lastObject]);


NSMutableDictionary的介绍和使用
(1)可变字典的创建
创建一个空字典
NSMutableDictionary dict1=[NSMutableDictionary dictionary];

创建一个指定键值对数目的字典
NSMutableDictionary dict2=[NSMutableDictionary dictionaryWithCapacity:3];

(2)增(key如果重复不会重复添加)
[dict1 setValue:@"lisi" forKey:@"ls"];
[dict1 setValue:@"zhangsan" forKey:@"zs"];

(3)删
根据键值删除
[dict removeObjectForKey:@"ls"];

删除全部
[dict removeAllObjects];

(4)改
[dict1 setValue:@"zhaosi" forKey:@"ls"];
简写:dict1[@"ls"]=@"aaa";

(5)查找
NSArray *arr=[dict1 allKeys];
if([arr containsObject:@"ls"]){
    NSLog(@"存放ls的key");
}


NSFileManager创建、简单实用
NSString *filePath=@"/Users/zhaoxiaohu/Desktop/arr.plist";
NSString *filePath2=@"/Users/zhaoxiaohu/Desktop";
//创建文件管理对象
//调用defaultManager创建一个文件管理的单例对象
//单例对象:在程序运行期间,只有一个对象存在
NSFileManager *fm=[NSFileManager defualtManager];

(1)判断文件是否存在
BOOL isYES=[fm fileExistsAtPath:filePath];

(2)判断是否是一个目录
BOOL isDir;
[fm fileExistsAtPath:filePath2 isDirectory:&isDir];
if(isDir){
    NSLog("这是一个目录.");
}

(3)判断文件是否可读
isYES=[fm isReadableFilePath:filePath];

(4)是否可写
//根目录是只读的
isYES=[fm isWritableFileAtPath:filePath];

(5)是否可删除
isYES=[fm isDeletableFileAtPath:filePath];


NSFileManager用法深入(一)
//创建文件对象
NSString *filePath=@"/Users/zhaoxiaohu/Desktop/arr.plist";
NSFileManager *fm=[NSFileManager defualtManager];

(1)获取文件信息
Dictionary *dict=[fm attributesOfItemAtPath:filePath error:nil];
NSLog(@"%@",dict);
NSLog(@"%@,%@",[dict objectForKey:@"NSFileOwnerAccountName",dict[@"NSFileOwnerAccountName"]]);
(2)获取指定目录下文件及子目录
NSString *dirPath=@"/Users/zhaoxiaohu/Desktop/0505/code";
NSArray *subPaths=[fm subpathsAtPath:dirPath];
(3)获取指定目录下的子目录(不在获取后代路径)

沙盒机制  每个ios应用都有自己的沙盒,应用沙盒就是文件系统目录,与其他应用的文件系统隔离,ios熊不允许访问其他应用的沙盒,在IOS8中已经开放访问
沙盒包含:
应用程序包
Documents 持久化的数据
tmp 临时目录
Library
cache 缓存
Preferences 配置信息\SQLit
沙盒路径获取的方法:
1)沙盒的路径
NSString *sandBoxPath=NSHomeDirectory();
2)Documents路径 
NSSearchPathForDirectoriesInDomains返回绝对路径
NSSearchPathForDirectoriesInDomains(1,2,3)
第一个参数:要获取的沙盒文件名称
第二个参数:NSUserDomainMask=1; //用户主目录中
NSLocalDomainMak=2; //当前机器中
NSNetworkDomainMask=4; //网络中可见的主机
NSSystemDomainMask=8; //系统目录,不可修改
NSAllDomainMask=0x0ffff;//全部
一般都是在用户的主目录下查找
第三个参数:是否获取全路径
eg:NSSearchPathForDirectoriesInDomains(
NSDocumentDirectory,NSUserDomainMask,YES);
3)tmp路径
4)Library路径
(1)Library:NSSearchPathForDirectoriesInDomains(1,2,3)修改第一个参数就可以访问
第一个参数改成:NSLibraryDirectory
(2)cache:第一个参数改成:NSCacheDirectory
(3)preferencs:没有NSPreferencesDirectory,但是我还是想获取,怎么办?
先获取Library的路径,然后拼接/Preference
NSString *filePath=NSSearchPathForDirectoriesInDomains(
NSLibraryDirectory,NSUserDomainMask,YES);
NSString *prePath="filePath/Preferences/1.txt";就把1.txt方到了Preferences文件中

isalpha() 判断是否是英文字母,小写字母返回3,大写字母返回1,不是字母返回0
isblank() 判断是否是空格

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值