如何在Xcode上完成扫描文件转换成word链接

Xcode项目引入外部文件夹,不能引用问题
生活不菜,菜鸟不菜,最近工作室有一个IOS项目,让小弟们做,他们还是新手,遇到了不少问题,其中一个就是,有一个外面的文件夹,里面写了好多的.h和.m文件,要调用这些.h和.m文件,就需要把他们拷贝到项目当中去,在xcode界面直接将那个文件夹拖入到项目当中就行,但是,你不能直接引用,菜鸟表示很纳闷,就上网找资料,然后就找到了,下面和大家分享一下。
最近在处理一些工程时候,偶尔注意到,工程文件里面添加了一些新的样式图标。什么样子呢,先看图,赫赫。
工程中的蓝色文件夹和以前习惯的黄色文件夹是不是不太一样。
今天简单总结一下Folder References and Groups 参考文件夹和分组
1. Group 分组
在xCode的工程中,右键New Group, 即可创建,也就是黄色的文件夹。
工程中想要分类管理的文件,可以分门别类的放在不同的group里面
group本身不影响文件的物理存放,也就是实际存放位置,只是在Project文件中2.Folder reference
在管理大量资源文件时候,利用foler reference可方便和实际文件夹构造保持一致.
下面是一个简单的创建过程Step1:
导入文件时选择Reference Step2:在代码中调用
这时候就不能直接用文件名调用了,需要指定相对文件夹的位置。
譬如说我们在group直接导入时,用的是
//Group情况
UIImage *image = [UIImage imageNamed:@"someImage.png"];
//Reference情况 I
UIImage *image = [UIImage imageNamed:@"Cats/Dogs/someImage.png"];
//Reference情况 II
NSString *fullPath = [[NSBundle mainBundle] pathForResource:@"someImageFile.png" ofType:nil
inDirectory:@"Cats/Dogs"];
UIImage *image = [UIImage imageWithContentsOfFile:fullPath];
注意的几个事情
1.导入文件时候,一个文件夹里面有多个子文件夹时,根据需要选择Group形式还是Reference形式导入。
group的好处时,一个逻辑结构引入,物理文件实际都在工程中直接用文件名调用即可。
尤其是在引入外部的Lib时候,需要选择该类型,否则编译时候出错概率会很大
2.folder reference的好处更像是在一个工程中可以引入不同的文件夹,文件名可以复用。
iOS随笔记-开发中遇到的#import头文件找不到的问题解决办法
关于Xcode导入文件夹的2种选择
&IOS&Xcode中一个工程如何引用另一个工程
iOS学习笔记-workspace添加工程时只有一个proj文件问题
xcode中向项目添加文件时的选项
让iOS工程目录和文件夹保持一致的工具:synx介绍
iOS 解决Xcode引入第三方Framework 找不到头文件
xcode项目依赖_基于一个工作空间不同工程的分层
xCode工程的文件夹类型 folder References group
没有更多推荐了,通过Xcodeproj深入探究Xcode工程文件 一
招聘信息:
前言你是否好奇Cocoapods是如何修改掉Xcode工程的结构?你也是否曾被Xcode工程的配置文件里面杂乱的内容搞得摸不清头脑?你又是否知道Xcodeproj这个神奇的Ruby库?下面我将通过这个系列来解除你的困惑。Cocoapods是如何修改Xcode工程结构的?我们知道Cocoapods是用ruby创作的一套第三方库,它很方便的可以删除、添加、更新第三方库?当你执行修改完PodFile执行pod update的时候,你会惊讶的发现Xcode工程被神奇的修改掉了。那么它是如何做到的呢?细心的你会发现,每个Xcode工程都有一个project.pbxproj文件,这个文件记录着该工程的文件结构。Cocoapods正是通过它的组件来对工程结构进行修改。project.pbxproj这个文件里面的内容到底是什么含义?如果你使用过SVN或者Git进行团队协作开发肯定会不可避免的遇到在合并代码的时候往往由于有过添加和删除文件的操作导致Xcode工程报错打不开,这时候一般的解决思路是打开project.pbxproj文件,Command+F键入======或者<<<<<来找到冲突的地方,将冲突的内容删除。然而有些人并不知道为何要这样解决甚至不知道里面的内容是何意思?下面的内容或许对你有些许帮助。project.pbxproj介绍project.pbxproj采用的是老式风格的plist文件(old ASCII plist),这最早是Next公司采用的一种文件格式,它跟XML格式很多地方类似,但是又有些许的不同。为了更方便理解,我建议你新建一个工程或者在以后的工程上打开project.pbxproj,在实例的基础上便于直观感受,更有助于
加深理解。首先我要介绍它里面的众多元素,例如objc
PBXBuildFile
PBXBuildPhase
PBXAppleScriptBuildPhase
PBXCopyFilesBuildPhase
PBXFrameworksBuildPhase
PBXHeadersBuildPhase
PBXResourcesBuildPhase
PBXShellScriptBuildPhase
PBXSourcesBuildPhase
PBXContainerItemProxy
PBXFileElement
PBXFileReference
PBXVariantGroup
PBXAggregateTarget
PBXLegacyTarget
PBXNativeTarget
PBXProject
PBXTargetDependency
XCBuildConfiguration
XCConfigurationList在万物皆对象的概念下,你尚可将他们理解为一个个类,它们里面的各个子元素就是一个个对象。最外层的每个元素如PBXBuildFile被称为一个个Section,为方便理解,文章后面的内容我都将这些元素称为类,将元素的实例成为对象。project.pbxproj的整体结构(根节点)```
// !$UTF8$!
& &archiveVersion = 1;
& &classes = { };
& &objectVersion = 45;
& &objects = {...};
& &rootObject = 028FC02AAC07 /* Project object */;
}```如果你已经打开了一个project.pbxproj,你就会很容易看到这种结构,只不过objects里面的各种类属于第二层结构,rootObject位于文件的最后一行。唯一标识码细心的你会看到,上面的根节点里面的rootObject后面是一串24位的16进制数,它就是每个对象的唯一标识码,它可以唯一标识文件的每个对象,也就是说
每个元素的标识码都是不同的。Xcode生成唯一标识码的算法可能引入了日期、序列和其它一些预定义的值,但是并没有确切的文档说明具体的生成过程。值得注意的是,该唯一标识码不仅在所在的工程中唯一,而且还是跨工程唯一。PBXBuildFilePBXBuildFile是文件类,被PBXBuildPhase等作为文件包含或被引用的资源。此时我已经新建了一个名为Xcode工程Demo的工程,此时的工程结构是这样,如图1所示。而此时的project.pbxproj中PBXBuildFile的结构如图2所示。可以清楚的看到每个PBXBuildFile对象都是由以下的结构组成objc
4D05CA6B5045 /* xxx.c in Sources */ = {
& &isa = PBXBuildF
& &fileRef = 4D05CA125045 /* xxx.c */;
};其中isa跟Objc中的对象的isa指针一样,指向的是它的类,而fileRef则指向的是一个PBXFileReference对象,这个类将在下面介绍。
细心的你又会发现,为什么图1和图2中的文件个数不一致,却和图3中编译时的文件和资源统一。前者的差异是由于PBXFileReference所致,通过后者我们可以大胆猜测,PBXBuildFile中的对象是编译时候需要确认的文件和资源的集合,如果不信的话可以拖几张图片资源扔进工程中
,经过验证结果和预测的情况一致。PBXFileReferencePBXFileReference用于跟踪项目引用的每一个外部文件,比如源代码文件、资源文件、库文件、生成目标文件等。具体表现如图4。它的结构如下:objc
D870007AFD45 /* objc.mm */ = {
& &isa = PBXFileR
& &fileEncoding = 4;
& &lastKnownFileType = sourcecode.cpp.
& &name = monobjc.
& &path = sources/monobjc.
& &sourceTree = "";
};里面的每个key的含义,对照着实际工程,大家不妨自行揣测。
我们再将PBXBuildFile和PBXFileReference放一起进行对比,如图5。AppDelegate.swift对象通过fileRef指向标识符为F3EAC的PBXFileReference对象,通过这个引用,一个PBXBuildFile对象就可以查到自己的具体信息,如fileType、name和path等信息。PBXGroupPBXGroup用于组文件,或者嵌套组。让我们来看下实例,如图6怡然是通过唯一标识符组装,每个PBXGroup对象都有一个children属性,里面可以是任何一种类的对象。但是这时候的PBXGroup指的是Xcode里面组织的分组结构,和实际文件系统中的结构并不相同。
指的注意的是,children中的每个文件对象都属于PBXFileReference类,而不是PBXBuildFile类PBXNativeTargetPBXNativeTarget就是工程中的target,如果工程中有多个target,都会在这个section中有所体现。
实例中如图7所示我们都知道每个target都有Compile Sources、Copy Bundle Resources、Link Binary With Libiaries这三个需要在编译时确定的内容。
而在PBXNativeTarget中通过buildPhases属性可以找到对应的内容。PBXSourcesBuildPhase和PBXResourcesBuildPhasePBXSourcesBuildPhase用于构建阶段中编译源文件,PBXResourcesBuildPhase用于构建阶段需要复制的资源文件,如图8需要注意的是,PBXSourcesBuildPhase这个section中放着所有的target的同类对象,PBXResourcesBuildPhase也是一样。PBXProjectPBXProject标识着整个工程,由根元素的rootObject引入。如图9所示该对象记录着targets、mainGroup等重要信息,甚至每个target在创建时候的Xcode版本都会记录在其中。其他元素还有其他很多重要的元素,如记录工程配置信息的XCConfigurationList和XCBuildConfiguration等,大家可以自行研究研究。总结由此看来,以前看到就头疼的project.pbxproj配置文件的内容并没有想象中的复杂,也可以看出Xcode文件组织的严密和周整。大家自己研究的时候,不妨可以动手改改项目中的内容,再去观察配置文件的变化,这样既可以有更深的理解,或许有新发现也说不定奥。下篇文章,我将带大家用Xcodeproj这个库来,通过几行代码修改project.pbxproj中的内容以达到通过脚本去修改Xcode工程和分析工程的目的。相关链接
微信扫一扫
订阅每日移动开发及APP推广热点资讯公众号:CocoaChina
您还没有登录!请或
点击量6265点击量4590点击量4565点击量3500点击量2909点击量2409点击量2381点击量2351点击量2333
&2016 Chukong Technologies,Inc.
京公网安备89涓婚? : 璇烽棶xcode閲岄潰鎬庝箞娣诲姞澶存枃浠

我要回帖

更多关于 excel如何链接文件 的文章

 

随机推荐