ocplist文件存入数组|ios的应用沙箱运行是怎么一回事

A. patchesocplist鎬庝箞鍚堝苟鍒癱onfigplist

瑕佸皢patchesocplist鏂囦欢鍚堝苟鍒癱onfigplist鏂囦欢涓锛屾偍闇瑕佹寜鐓т互涓嬫ラよ繘琛屾搷浣锛1. 纭淇漰atchesocplist鏂囦欢鍜宑onfigplist鏂囦欢閮藉湪鍚屼竴鐩褰曚笅銆2. 鎵撳紑configplist鏂囦欢锛屽苟鎵惧埌鎮ㄦ兂瑕佹坊鍔爌atchesocplist鏂囦欢鍐呭圭殑鐩稿簲閿鍊煎广3. 鎵撳紑patchesocplist鏂囦欢锛屽苟鎵惧埌鎮ㄦ兂瑕佸嶅埗鍒癱onfigplist鏂囦欢鐨勯敭鍊煎广4. 灏唒atchesocplist鏂囦欢涓瀵瑰簲鐨勯敭鍊煎瑰嶅埗鍒癱onfigplist鏂囦欢涓鐩稿簲鐨勯敭鍊煎瑰悗闈銆5. 淇濆瓨configplist鏂囦欢骞跺叧闂銆璇锋敞鎰忥紝鍚堝苟鏂囦欢鏃讹紝鎮ㄩ渶瑕佺‘淇濅袱涓鏂囦欢涓鐨勯敭鍊煎逛笉浼氬彂鐢熷啿绐併傚傛灉瀛樺湪鍐茬獊锛屾偍闇瑕佹牴鎹瀹為檯鎯呭喌杩涜岄傚綋鐨勫勭悊锛屼緥濡傝嗙洊鎴栦繚鐣欏師鏈夌殑閿鍊煎广傛ゅ栵紝鍚堝苟鍚庣殑鏂囦欢鍙鑳介渶瑕侀噸鏂颁繚瀛樺苟鐢熸垚鏂扮殑鏂囦欢鍚嶃

B. ios怎么更新plist文件里的数据

方法:用ifile或者ifunbox等文件管理器 改名(个人建议在plist后面加个“备份 来改掉扩展名)或删除(不建议)/System/Library/LaunchDaemons下的egcom.apple.mobile.softwareupdated.plist – OTA升级,不需要自动更新系统功能的,可安全改名或删除.com.apple.OTATaskingAgent.plist – 通知系统进行ota升级,不需要OTA自动更新的,可安全改名或删除.com.apple.softwareupdateservicesd.plist – OTA升级服务,不需要OTA自动更新的,可安全改名或删除. 改名或者删除后记得必须重启!!!此方法即保证了不会手动升级到5.1,也可以防止苹果自动悄悄升级到5.1,而且还可以节约系统运存,ps:这个目录下的文件的删除或者改名操作是绝对安全的,不会系统崩溃的。大家尽可放心!有人反映说禁用ota会会影响appstore无法使用,本人亲测无任何问题,大家也可以测试一下,退一万步讲大不了再把名字改回来恢复ota功能即可,ifile在修改文件的时候早已帮你把源文件备份好了。!特别处理:手机已经下载升级包的处理办法:1、删除已经在/var/mobile/Library/Assets/com_apple_MobileAsset_SoftwareUpdate目录下的 OTA 下载临时固件包2、清除掉设置右上角的红色带圈数字1 的办法 :cydia里安装BadgeClear这个软件,先让图标闪动起来,然后迅速连续多次点击图标,在弹出来的BadgeClear小窗口里点击删除即可。3、清除掉通用 以及 软件更新右侧的数字1 的办法 :进入System/Library/CoreServices这个文件夹,找到SystemVersion.plist 将ProctBuildVersion的数值改为9B179,然后重启手机,发现讨厌的数字1消失了,这时后再改为原来的数值例如9A405后重启即可。(这里只是临时更改以欺骗ios误以为系统已经最新自动去掉数字1而已,因此不建议长期修改为9B179,会导致很多后遗症)可选操作:干掉软件更新: 在手机上用ifile在根目录下找到“ Applications/Preferences.app/General.plist”这个文件,点一下在弹出的窗口中选“属性表编辑器”,接着进入“数组”删掉第三项 “2:” 点右上角 "完成" 即可干掉抹除还原:在手机上用ifile在根目录下找到“ Applications/Preferences.app/reset.plist”这个文件 , 点一下在弹出的窗口中选“属性表编辑器”,接着进入“数组”删掉第三项 “2:” 点右上角 "完成" 即可摘自威锋锋友国际旅游岛

C. ios的应用沙箱运行是怎么一回事

1、IOS沙盒机制 IOS应用程序只能在本应用程序中创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等。1.1、每个应用程序都有自己的存储空间1.2、应用程序不能翻过自己的围墙去访问别的存储空间的内容1.3、应用程序请求的数据都要通过权限检测,假如不符合条件的话,不会被放行。通过这张图只能从表层上理解sandbox是一种安全体系,应用程序的所有操作都要通过这个体系来执行,其中核心内容是:sandbox对应用程序执行各种操作的权限限制。2、打开模拟器沙盒目录 下面看看模拟器的沙盒文件夹在mac电脑上的什么位置。文件都在个人用户名文件夹下的一个隐藏文件夹里,中文叫资源库,英文名是Library。下面介绍一种简单方法前往该文件夹:在Finder上点->前往->前往文件夹进入模拟器后,里面就包含了各个应用程序的沙盒。进入一个应用程序,如下图,就是一个沙箱了。下面介绍一下沙箱的目录结构: 默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp和一个应用程序文件(也是一个文件)。因为应用的沙盒机制,应用只能在几个目录下读写文件Documents:苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录Library:存储程序的默认设置或其它状态信息;Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除tmp:提供一个即时创建临时文件的地方。iTunes在与iPhone同步时,备份所有的Documents和Library文件。iPhone在重启时,会丢弃所有的tmp文件。注意:这里很容易和bundle混淆在一起,下面根据自己的一点理解说明二者的区别:bundle :生成 iOS 应用程序时,Xcode 将它捆绑成一个包。捆绑包 (bundle) 是文件系统中的一个目录,它将相关资源成组在一个地方。一个 iOS 应用程序捆绑包中,含有其可执行文件和支持资源文件(如应用程序图标、图像文件和已本地化的内容)。A bundle(包裹、捆、束) is a directory with a standardizedhierarchical structure that holds executable code and the resources used by that code.所以可以将整个应用程序其实就可以看做一个bundle。沙箱的概念和bundle没直接关系,沙箱只是说明程序资源与外界隔离下面通过一个简单的例子说明一下bundle和sandbox。 //新建的plist文件是在应用程序中的,可以通过bundle存取到该文件 NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"MyPlist" ofType:@"plist"]; NSMutableArray *array = [NSMutableArray arrayWithContentsOfFile:plistPath]; //向数组中新添加一个项目 [array addObject:@"3"]; //重新写回plist文件中 BOOL value = [array writeToFile:plistPath atomically:YES]; if (value) { NSMutableArray *newArray = [NSMutableArray arrayWithContentsOfFile:plistPath]; NSLog(@"new array = %@",newArray); } /* 输出: new array = ( 0, 1, 2, 3 ) *///获取沙箱中document的path NSArray *paths = (NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *newPath = [documentsDirectory :@"data.plist"]; //将数组写入到沙箱的document中的data.plist文件中 [array writeToFile:newPath atomically:YES]; NSMutableArray *arr = [[NSMutableArray alloc] initWithContentsOfFile:newPath]; NSLog(@"array in data.plist = %@",arr); /* 输出: array in data.plist = ( 0, 1, 2, 3 ) */说明:我们首先在项目中新建一个plist文件(root项的类型为数组),添加了3个元素。因为新建的plist文件是在应用程序中的,我们可以通过bundle获取到这个plist文件,读取出这个数组,添加一个数据元素后,重新写回plist文件中。接着我们获取沙箱document的path,然后将这个文件写入到沙箱中的data.plist文件中(如果不存在,会自动新建一个的),然后再从data.plist读取出这个数组。关于新建的MyPlist.plist文件,我们写回文件的数组中添加了一项新的元素,但是我们在xcode中查看这个MyPlist.plist文件时,发现并没有显示出新增的数组元素,但是我们到沙箱中查看就可以看到了,这个估计是xoode本身的问题。关于document中data.plist文件查看我们也可以到沙箱中进行查看。如下图:3、获取沙盒目录: //1、获取程序的Home目录 NSString *homeDirectory = NSHomeDirectory(); NSLog(@"path:%@", homeDirectory); //path:/Users/ios/Library/Application Support/iPhone Simulator/6.1/Applications/BF38C9E3-1A4A-4929-B5F2-3E46E41CC671 //2、获取document目录 NSArray *paths = (NSDocumentDirectory, NSUserDomainMask, YES); NSString *path = [paths objectAtIndex:0]; NSLog(@"path:%@", path); //path:/Users/ios/Library/Application Support/iPhone Simulator/6.1/Applications/BF38C9E3-1A4A-4929-B5F2-3E46E41CC671/Documents //3、获取Cache目录 NSArray *paths = (NSCachesDirectory, NSUserDomainMask, YES); NSString *path = [paths objectAtIndex:0]; NSLog(@"path:%@", path); //path:/Users/ios/Library/Application Support/iPhone Simulator/6.1/Applications/BF38C9E3-1A4A-4929-B5F2-3E46E41CC671/Library/Caches //4、获取Library目录 NSArray *paths = (NSLibraryDirectory, NSUserDomainMask, YES); NSString *path = [paths objectAtIndex:0]; NSLog(@"path:%@", path); //path:/Users/ios/Library/Application Support/iPhone Simulator/6.1/Applications/BF38C9E3-1A4A-4929-B5F2-3E46E41CC671/Library //5、获取tmp目录 NSString *tmpDir = NSTemporaryDirectory(); NSLog(@"path:%@", tmpDir); //path:/Users/ios/Library/Application Support/iPhone Simulator/6.1/Applications/BF38C9E3-1A4A-4929-B5F2-3E46E41CC671/tmp/4、文件操作之NSFileManager4.1 、在document中创建一个文件目录 NSArray *paths = (NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSLog(@"documentsDirectory%@",documentsDirectory); NSFileManager *fileManager = [NSFileManager defaultManager]; NSString *testDirectory = [documentsDirectory :@"test"]; // 创建目录 [fileManager createDirectoryAtPath:testDirectory withIntermediateDirectories:YES attributes:nil error:nil];4.2 、 在test目录下创建文件 创建文件怎么办呢?接着上面的代码 testPath 要用拼接上你要生成的文件名,比如test11.txt。这样才能在test目录下写入文件。testDirectory是上面代码生成的路径哦,不要忘了。我往test文件夹里写入三个文件,test11.txt ,test22.txt,text.33.txt。内容都是写入内容,write String。实现代码如下: NSString *testPath1 = [testDirectory :@"test1.txt"]; NSString *testPath2 = [testDirectory :@"test2.txt"]; NSString *testPath3 = [testDirectory :@"test3.txt"]; NSString *string = @"写入内容,write String"; [fileManager createFileAtPath:testPath1 contents:[string dataUsingEncoding:NSUTF8StringEncoding] attributes:nil]; [fileManager createFileAtPath:testPath2 contents:[string dataUsingEncoding:NSUTF8StringEncoding] attributes:nil]; [fileManager createFileAtPath:testPath3 contents:[string dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];4.3获取目录列里所有文件名两种方法获取:subpathsOfDirectoryAtPath 和 subpathsAtPathNSArray *paths = (NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSLog(@"documentsDirectory%@",documentsDirectory); NSFileManager *fileManage = [NSFileManager defaultManager]; NSString *myDirectory = [documentsDirectory :@"test"]; //方法一 NSArray *file = [fileManage subpathsOfDirectoryAtPath: myDirectory error:nil]; NSLog(@"%@",file); //方法二 NSArray *files = [fileManage subpathsAtPath: myDirectory ]; NSLog(@"%@",files);获取刚才test目录下的所以文件名: 两种方法都是输出 ( "test1.txt", "test2.txt", "test3.txt")4.4 、fileManager使用操作当前目录//创建文件管理器 NSFileManager *fileManager = [NSFileManager defaultManager]; NSArray *paths = (NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; //更改到待操作的目录下 [fileManager changeCurrentDirectoryPath:[documentsDirectory stringByExpandingTildeInPath]]; //创建文件fileName文件名称,contents文件的内容,如果开始没有内容可以设置为nil,attributes文件的属性,初始为nil NSString * fileName = @"testFileNSFileManager.txt"; NSArray *array = [[NSArray alloc] initWithObjects:@"hello world",@"hello world1", @"hello world2",nil]; //下面是将数组类型转换为NSData类型 NSMutableData *data = [[NSMutableData alloc] init]; for (int i = 0; i < [array count]; ++i ){ NSString *str = [array objectAtIndex:i]; NSData *temp = [str dataUsingEncoding:NSUTF8StringEncoding]; [data appendData:temp]; } //注意contents参数的类型是NSData类型 [fileManager createFileAtPath:fileName contents:data attributes:nil];4.5 删除文件接着上面的代码就可以将刚新建的 testFileNSFileManager.txt文件删除! [fileManager removeItemAtPath:fileName error:nil];4.6 混合数据的读写 请参看原文最后面的内容。

D. 如何将iOS工程中的.plist文件里的内容取出在android的工程中使用

.plist文件里面放的可能是数组也可能是字典,我们如果直接用NSLog方法打印数组,字典回的时答候,我们会得到的


赞 (0)