我们在iOS开发中,难免会遇到项目做到一半要改名字的情况。如果项目名差的太大,工程名看起来总是不舒服的,有良心的开发者可能就会想着为工程改个贴切的名字,那么你就为用到本文记录的内容。

如果我们开发的两个项目相差不大,只有部分主题、布局有更改,那么我们就可以拷贝之前已经完成的项目,改改名字,再对部分界面和代码稍稍修改就可以啦。

如何修改工程名呢?

下面我就拿一个中等大小的项目来实际操作一下,并记录整个要修改的地方。

该项目的结构如下:

项目中还用到了几个第三方框架:

接下来,就要开始修改项目名称了。假设我要把doutu改为shopping

提醒:

* 在改工程名之前,要注意三件事:一定要备份,一定要备份,一定要备份。

* 在开始第一步之前,请先执行第八步。

1.修改project名称

选中project 单击project名字 或者 选中project+回车。



修改project的名称之后,回车会有提示:



这里点击Rename,将project中部分doutu改为shopping

修改之后,哪些地方有明显变化呢?

2.修改文件夹名称

选中文件夹 单击文件夹名字 或者 选中文件夹 回车

修改之后,回车是这样的:

虽然在Xcode 里文件夹的名字修改了,但是实际上文件夹里的名字还是没有修改,我们需要去真实文件夹里再修改一次。

3.修改工程中文件夹的路径

在上一步修改玩真实文件夹的名字后,工程中所有的类都变成了红色(文件找不到)。如下图所示:

主要是因为工程中的文件夹指引的路径不对。

按照如上步骤所示,找到我们刚才修改的真实shopping文件夹,点击Chose 即可。

这时候,因为文件夹关联的真实文件夹路径正确了,所有红色的文件都正常了。

这是修改后的样子:

4.全局搜索

全局搜索doutu,搜索结果如下:

接下来是将doutu替换为shopping

点击Replace All之后,大部分doutu都会被替换为shopping,但是还是有一些顽固的残留。

可以看出,这个是project 文件中,我的第三方框架的framework Search Paths 和Library Search Paths 的路径错误。即:

这里只需要将doutu 修改为 shopping即可。

怎么修改呢?

有两种方式,第一种双击framework Search PathsLibrary Search Paths 后面的值,然后单独修改每个值。

第二种方案,先将framework Search PathsLibrary Search Paths中的值都删掉,然后把第三方删除,再重新添加。

这里点击Remove References删除,然后再把Vendor文件夹添加进工程即可。

5.修改pch文件路径

如果你的工程里添加了pch文件,因为修改了文件夹,project名字,所以pch文件夹路径也要修改。修改前编译运行,会报如下错误:

在Build Settings 中搜索Prefix,修改Prefix Header 的值。

上面把doutu/shopping-Prefix.pch修改为shopping/shopping-Prefix.pch即可。

6.修改info.plist文件路径

此时再次编译运行,依然会有一个错误,错误如下:

然后依然去 Build Setting 中搜索info.plist。

上面将doutu/Info.plist修改为shopping/Info.plist即可。

到这里,工程应该已经可以正常运行了。

但是,如果你想追求完美,依然还有两个地方需要修改。

7.修改scheme 值

要修改的其实是这个地方的显示名称:

怎么修改呢?

点击scheme值,然后选择 Manage Schemes...

接下来会进入到一个弹出窗口,选中一行,点击scheme值或者 回车

这里把doutu 修改为 shopping就会看到 scheme 变成了shopping,如下图所示:

8.修改大文件夹的名称

其实这一步,应该在拷贝完工程后,直接修改的。所以这一步更应该放在第一步做。

到这里,就真的大功告成啦。Have Fun!

最新文章

  1. phpmyadmin上传大sql文件办法
  2. win8.1/win10 UEFI + GPT 安装(测试机型:华硕S56CM)
  3. 新建一个Activity
  4. 【推荐】开放静态文件 CDN服务staticfile.org
  5. Chp10: Scalability and Memory Limits
  6. iOS之使用QLPreviewController打开文件,处理txt文件出现乱码的情况
  7. UESTC_酱神的旅行 2015 UESTC Training for Dynamic Programming<Problem M>
  8. 《UNIX环境高级编程》笔记--线程的标识、创建和终止
  9. 深度解析Linux通过日志反查入侵
  10. Apache与Nginx优缺点比较
  11. [WPF疑难] 继承自定义窗口
  12. 4、mybatis动态sql+struts2(通配符+全局配置+分页)
  13. sql查询单表之中大于2条的数据
  14. 【转】Mybatis源码解读-设计模式总结
  15. ASP.NET MVC5高级编程 之 HTML辅助方法
  16. matlab:inv,pinv逆与伪逆
  17. 使用JWT的RSA256加密做为用户认证, 测试性能
  18. nginx 根据域名和地址跳转
  19. datetime is not json serializable
  20. Eclispe IDE集成Maven

热门文章

  1. [LeetCode] Valid Palindrome II 验证回文字符串之二
  2. [LeetCode] Can Place Flowers 可以放置花
  3. Python模块 - re
  4. Linux 在添加一个新账号后却没有权限怎么办
  5. kafka知识体系-kafka设计和原理分析-kafka文件存储机制
  6. Codeforces 700E. Cool Slogans
  7. hdu 5830 FFT + cdq分治
  8. [HDU]4694 Important Sisters(支配树)
  9. [BZOJ]4650: [Noi2016]优秀的拆分
  10. bzoj3685普通van Emde Boas树 线段树