zoukankan      html  css  js  c++  java
  • iOS学习笔记10

    经常会有需要从应用中搜索并读取一个文件或图片。这时候就会用到如下的语句:

    NSString *path = [[NSBundle mainBundle] pathForResource:@"AddressFields" ofType:@"plist"];

    通过如上的语句获取到路径之后,就可以再通过各种方法解析或显示文件了

    NSMutableDictionary *registerConfig = [NSMutableDictionarydictionaryWithContentsOfFile:path];

     

    上面的方法中有一个对象是以前开发桌面程序没有看到过的:Bundle。那这次就来说下Bundle吧。

     

    1. 定义

    Bundle是一个文件夹,一个包含了可执行代码,图片,音乐的文件夹。根据wiki(http://en.wikipedia.org/wiki/Bundle_(NEXTSTEP)) ,应该是一个Apple专属的名词?作为对比,Windows经常将文件在编译时包含在一个可执行文件(exe)或DLL里了。

    Bundle作为一个文件夹的有一个好处应该是文件结构很清晰?有人提问过怎么做一个iOS的asset bundle,答案超级简单:

    创建一个文件夹,把文件添加进去,重命名为 bundle名字.bundle

    颇有将一个大象装到冰箱里去的感觉。

     

    2. 组成

    Bundle下有一个运行时的配置文件:Info.plist。资源文件放在Resources文件夹下。

    如果要实现多语言的话,应该只需要往Resources下更新一个对应语言的资源文件就可以了?

     

    3. mainBundle

    每个应用必然有一个mainBundle。这个Bundle中包含了应用的代码。

    在程序加载的时候,首先会载入mainBundle里的马上需要执行的代码和资源,然后才会延迟或动态加载mainBundle或其他bundle中的其他代码和资源。

     

    4. Info.plist

    Info.plist是存放运行时读取的键值对的XML文件。

    如果要读取Info.plist里的值,可以通过:

    [[NSBundle mainBundle] objectForInfoDictionaryKey:key_name];

    来直接获取,例如:

    NSString *appVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];

    所有iOS下的Info.plist里的值,可以参考:http://developer.apple.com/library/ios/#documentation/general/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html%23//apple_ref/doc/uid/TP40009252-SW1 

  • 相关阅读:
    npm 安装卸载模块 & ionic插件安装与卸载
    Vue中v-model解析、sync修饰符解析
    Vue props用法详解
    vue页面跳转
    Swift 4 中的泛型
    Swift枚举的全用法
    蓝牙 BLE 三种 UUID 格式转换
    SVG图案
    SVG渐变
    SVG坐标系统及图形变换
  • 原文地址:https://www.cnblogs.com/galaxyyao/p/3156123.html
Copyright © 2011-2022 走看看