项目有些需求可能需要获取项目的名字,这里只是简单的写下自己的想法

项目名字、版本号等属性是plist文件形式维护的,需要拿到bundle文件中管理各种属性的字典,根据相应的key去获取对应的值。

[[NSBundle mainBundle] infoDictionary];
复制代码

打印其数据:

{BuildMachineOSBuild = 15G1217;CFBundleDevelopmentRegion = en;CFBundleExecutable = GetAppName;CFBundleIdentifier = "com.cai.GetAppName";CFBundleInfoDictionaryVersion = "6.0";CFBundleName = GetAppName;CFBundleNumericVersion = 16809984;CFBundlePackageType = APPL;CFBundleShortVersionString = "1.0";CFBundleSupportedPlatforms =     (iPhoneSimulator);CFBundleVersion = 1;DTCompiler = "com.apple.compilers.llvm.clang.1_0";DTPlatformBuild = "";DTPlatformName = iphonesimulator;DTPlatformVersion = "10.2";DTSDKBuild = 14C89;DTSDKName = "iphonesimulator10.2";DTXcode = 0821;DTXcodeBuild = 8C1002;LSRequiresIPhoneOS = 1;MinimumOSVersion = "10.2";UIDeviceFamily =     (1);UILaunchStoryboardName = LaunchScreen;UIMainStoryboardFile = Main;UIRequiredDeviceCapabilities =     (armv7);UISupportedInterfaceOrientations =     (UIInterfaceOrientationPortrait,UIInterfaceOrientationLandscapeLeft,UIInterfaceOrientationLandscapeRight);}
复制代码
//CFBundleExecutable    -> 获取项目工程名
//CFBundleIdentifier    -> 获取应用唯一标识
//CFBundleName          -> 获取项目工程名
//CFBundleShortVersionString    -> 获取应用版本号 (App Store上版本号 -> Version)
//CFBundleVersion               -> 获取应用内部版本号(Build)
复制代码

#####默认

  • 新建一个项目,工程名设置为: GetAppName,其他不做任何修改,输出相关key的值:
NSLog(@"--%@--%@--%@", [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"], [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleExecutable"], [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"]);
复制代码
  • Output:
--GetAppName--GetAppName--(null) --> 因为Display Name未设置 则不存在此key的值
复制代码

#####仅设置Display Name

//1. Display Name不为空: --> 工程 -> TARGETS -> General -> Identity -> Display Name: 简书-创作你的创作NSLog(@"-%@", [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"]);//输出: -简书-创作你的创作
复制代码

#####仅设置Info.plist中Bundle name的值为中文

//2. Display Name 为空: --> Info.plist文件中Bundle name的值修改app名字为中文 例如: 简书NSDictionary *appInfo = [[NSBundle mainBundle] infoDictionary];NSLog(@"%@", [appInfo objectForKey:(NSString *)kCFBundleNameKey]);//输出: 简书
复制代码

#####既设置Info.plist中Bundle name的值为中文又设置Display Name

//3.Info.plist文件中Bundle name的值修改app名字为中文 例如: 简书 并且 修改设置Display Name: 简书-创作你的创作NSLog(@"--%@--%@--%@", [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"], [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleExecutable"], [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"]);//输出: --简书--GetAppName--简书-创作你的创作
复制代码

PS: 两者均设置的情况下,手机界面显示的应用名字和Display Name设置的名字保持一致。

建议使用仅设置Info.plist中Bundle name的值的方式设置应用名字,这样在获取应用名字的时候,防止使用CFBundleDisplayName不存在造成获取值为空。


#####如何拿到应用名字、版本号等key:

除了直接使用代码方式将其打印出来,还可以如下图:

或者

code

获取应用名字、版本号相关推荐

  1. VS中实时获取SVN的版本号并写入到AssemblyInfo.cs中(C#)

    原文: VS中实时获取SVN的版本号并写入到AssemblyInfo.cs中(C#) 在开发项目时,需要知道当前发布的到底是哪个版本,比较好的方式就是获取SVN的版本来作为项目的版本.项目版本一般由主 ...

  2. Java 获取操作系统名字、系统版本、cpu信息

    Java 获取操作系统名字.系统版本.cpu信息 System.getProperty("os.name");//得到操作系统名字 System.getProperty(" ...

  3. C#获取程序集的版本号和最后编译时间

    C#获取程序集的版本号: string ver = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToStri ...

  4. android获取版本号报错,Android开发:获取安卓App版本号的方法步骤

    在Android开发过程中,想要开发一个完整功能的App,各个地方的内容都要涉及到,比如获取App的系统版本号就是必须要有的功能.Android的App版本号相关内容比iOS的App版本号内容要多,而 ...

  5. C语言:运行中获取宏名字的技巧

    C语言:运行中获取宏名字的技巧 在调试C语言程序时,有时需要打印宏的名字.可以通过定义宏,宏名字的数组来获得. 例如: [cpp] view plaincopy #include <stdio. ...

  6. PHP 获取浏览器以及版本号

    PHP 获取浏览器以及版本号  增加获取 chrome浏览器 各大经典浏览器HTTP_USER_AGENT详细 IE  而IE各个版本典型的userAgent如下:   Mozilla/4.0 (co ...

  7. 通过movie_id来查询数据库获取电影名字和平均得分

    douban_comment_data.db中包含三个表:comment.movie.movie_chinese.三个表中的数据模块定义(DDL)如下: 1.comment CREATE TABLE ...

  8. 微信小程序获取小程序版本号与服务器不符,微信小程序版本号比较

    首先获取到当前版本号 : wx.getSystemInfo({ success (res) { console.log(res.model) //获取设备名:iPhone,Meizu...... co ...

  9. 获取阿里云mysql实例名称_阿里云如何获取数据库名字

    全网最新活动请看下方内容或右侧内容! --------------- 阿里云如何获取数据库名字,阿里云服务器回滚数据库. 对于大多数小型或初期项目来说,我们可能常用的做法是先将web.数据库全部安装在 ...

  10. Mac开发之获取设备名字、IP地址和MAC地址

    在项目中遇到需要获取设备名字.IP地址和MAC地址信息,之前用NSHost,结果发现不是很稳定,就放弃了,另外想出了几个方法,下面记录一下: ViewController.h // // ViewCo ...

最新文章

  1. java 虚拟机 初始化_Java虚拟机 类初始化 阶段
  2. 4计算准确率_PyTorch实现,GitHub 4000星:这是微软开源的计算机视觉库
  3. 安装教程-VMware 12 安装 Windows 10 企业版
  4. Oracle 每个session的限制,限制oracle普通用户能且只能kill自己的会话
  5. 滴滴顺风车春运暂不上线;锤子员工被强制离职;苹果聘请三星高管 | 极客头条...
  6. Wireshark实战分析之IP协议(一)
  7. 【Paper】2015_Coordinated cruise control for high-speed train movements based on a multi-agent model
  8. [Linux 基础] -- Linux 之 fstab 文件详解
  9. java计算机毕业设计小小银动漫网站源代码+数据库+系统+lw文档
  10. Android应用内跳转Scheme协议
  11. quoted-printable解码程序
  12. 远距离激光多脉冲测距TDC2K8S芯片使用
  13. java 实现http长轮询,Long Polling长轮询实现进阶
  14. 大数据技术原理与应用(第十章 Spark)
  15. 钢筋计数VOC数据集
  16. JavaGUI:多功能计算器(五)--Swing实现双语数据包+菜单切换(完整源码+EXE下载)
  17. 基于S32K144实现TPS929120的基本控制功能
  18. 数据结构与算法——迷宫问题
  19. 宇视摄像机接入TSINGSEE青犀视频平台,如何基于SDK获取设备的组织和摄像机?
  20. 理财系列 2 股票体检指标之市盈率

热门文章

  1. SSIS包的组建之连接管理器
  2. Oracle11gR1中细粒度访问网络服务(转)
  3. 前端实践(1)——加载显示word文档内容
  4. 【ArcGIS|空间分析|网络分析】11 利用流量数据执行网络分析
  5. redis主从架构宕机问题解决方法
  6. ios md5 原理_iOS实现MD5加密
  7. H.264标准(三)F4V封装格式详解
  8. python基础知识——函数(上)
  9. jmp怎么做合并的箱线图_Python数据可视化:箱线图多种库画法
  10. android内存泄漏MAT,利用Android Studio、MAT对Android进行内存泄漏检测