注意2点:存在NSBundle的plist、sqlite数据是不让更改的,更改之后会存在其他隐藏路径下,xcode右边的那个不会改变.(每次运行xcode之后会copy一份放在隐藏的位置,路径类似于
/Users/songxuhua/Library/Application Support/iPhone Simulator/7.1/Applications/D7C94D56-ABBB-4831-A50C-8FCF902F57E2/Sqlite3.app/dict1.sqlite3(模拟器下的),更改只会在这里发生,当再次运行的时候他会再次copy xocde目录下的东西进行更改)---所以当你更改完毕,请将更改后的plist或sqlite放到xcode目录下
真机上是无法更改NSBundle里的plist和sqlite等文件,会报错attempt to write a readonly database
在iOS项目开发过程中,总会遇到或多或少的问题,比如说,在使用NSBundle pathForResource取不到值,着实让人纠结,下面将奉上超级解决方案。
代码如下:
- NSString *path = [[NSBundle mainBundle] pathForResource:@"sortednames" ofType:@"plist"];
- NSLog(@"path = %@", path);
- NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path];
但是运行出来,path一直是null
师父找了好久,终于找到答案了
http://stackoverflow.com/questions/3949368/nsbundle-pathforresource-is-null
记录一下:
command-line tool是没有bundle的,所以用NSBundle的时候一直是null, 如果要使用bundle获取资源,那么需要添加application的target。
按照上述改法,添加了一个target之后,还有问题,依旧找不到文件
然后师父做了以下操作:
http://s4.51cto.com/wyfs01/M00/16/23/wKioJlIUKA-i9rfpAACcFOqWgfk078.jpg
在这里添加了文件之后,然后再运行,文件就能取到了。
之后又尝试了在command-line tool中也按照上述方法,添加文件
首先,默认是没有bundle选项的
http://s3.51cto.com/wyfs01/M01/16/23/wKioJlIUKA-Ql0nPAACcrUOju30816.jpg其次,就算手动添加了build phrase,再添加文件,运行出来,还是取不到path
http://s1.51cto.com/wyfs01/M00/16/25/wKioOVIUKBDBC6mQAAEcPN4C0rE014.jpg所以, 如果要使用bundle获取项目中的资源, 必须要使用application