NSBundle pathForResource取不到值

注意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取不到值,着实让人纠结,下面将奉上超级解决方案。

AD:WOT2014:用户标签系统与用户数据化运营培训专场


代码如下:

  1. NSString *path = [[NSBundle mainBundle] pathForResource:@"sortednames" ofType:@"plist"]; 
  2.       NSLog(@"path = %@", path); 
  3.       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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值