select [#ad#] from abc,就返回结果了,你可以试一下,用[]将字段扩起来,这样数据库就认为它是一个字段了,而不是特殊符号了。
而且也试了一下,多个字段也是可以实现的。若要更改列表中项目符号或编号的格式,请单击任意项目符号或编号以选择列表中的所有项目符号或编号。 如果选择文本,则文本和项目符号或编号的格式都将更改。
选择新的项目符号或编号格式
单击列表中要更改的项目符号或编号。
在多级列表中,您可以通过单击列表中该级别的一个项目符号或编号来一次更改一个级别的格式。
在 " 开始 " 选项卡上的 " 段落 " 下,单击 " 项目符号 " 或 " 编号 " 旁边的箭头。
在 " 项目符号库 " 或 " 编号库 " 中单击所需的项目符号或编号列表格式。
定义新的项目符号字符、字体或
"项目符号库" 中显示的项目符号是 Word 字体库的子集。 这意味着您可以为项目符号选择不同的字符。 例如,您可以将点项目符号更改为箭头,甚至是欧元或美元字符之类的内容。 你还可以使用通过 internet 或在你的计算机上找到的图像。
单击列表中的项目符号以选择所有项目符号。
单击项目符号图标旁边的向下箭头。
在d出面板的底部,单击 " 定义新项目符号 "。
在 " 定义新的项目符号 " 面板中,执行下列 *** 作之一:
若要更改或添加字符,请单击 " 符号 "。 从符号库中,选择一个字符,然后单击 "确定" 。
若要在选取新字符后更改字体属性,请单击 " 字体 "。 更改 "样式"、"大小" 和 "字体",然后单击 "确定" 。
若要添加,请单击 ""。 在 "插入" 窗口中,单击来自计算机上的图像的 文件 或 " 必应图像搜索 " 以联机查找。
选择要从计算机中使用的图像或必应搜索,然后单击 " 打开 " 或 " 插入 "。
如果 预览 中的新项目符号看起来很好,请单击 "确定" 。
更改列表中项目符号或编号的字体格式、颜色或大小
项目符号和编号字体、颜色和大小均由字体属性控制。 可以更改列表中项目符号或编号的文本格式,而无需对列表中的文本进行更改。 例如,您可以使用与列表中的文本不同的字体颜色设置数字或项目符号的格式。
单击列表中的项目符号或编号。
列表中的所有项目符号或编号均处于选中状态。
在 " 开始 " 选项卡上的 " 字体 " 组中,进行所需的更改。
例如,单击 " 字体颜色 " 旁边的箭头,然后单击所需的颜色。
更改列表中项目符号或编号项目的级别
你可以轻松地更改列表项的级别。
单击已移出位置的项目符号或编号。
在 " 开始 " 选项卡上的 " 段落 " 下,单击 " 项目符号 " 或 " 编号 " 旁边的箭头。
指向 " 更改列表级别 ",然后单击所需的级别。
在列表中将项目符号转换为数字,反之亦然
单击列表中要更改的项目符号或编号。
通过单击自动识别的项目符号列表或编号列表中的项目符号或编号,选择整个列表。
在“ 开始 ”选项卡的“ 段落 ”组中,单击“ 项目符号 ”或“ 编号 ”。
若要重新更改列表,请单击 " 项目符号 " 或 " 编号 " 。
在多级列表中将项目符号转换为数字,反之亦然
多级列表以多个级别(而不是在一个级别)显示列表项。
在列表中单击要更改的级别的项目符号或编号。
通过单击自动识别的项目符号列表或编号列表中的项目符号或编号,可选择该特定级别的所有列表项。
若要将整个多级列表转换为项目符号或编号,请选择整个列表。
在“ 开始 ”选项卡的“ 段落 ”组中,单击“ 项目符号 ”或“ 编号 ”。
若要重新更改列表,请单击 " 项目符号 " 或 "编号" 。我也遇到了相同的问题,折腾了一个上午,最后在看网友说,打开选项-》设置对话框,在项目-》(你当前项目名称)-》管理-》符号库,点击右侧符号库一栏中你正在使用的符号库,重新载入后,点击应用,确定后,再去插入符号时,自定义的符号就出来了iOS SDK开发就是为某一个应用场景、或领域、或需求,提供一个已实现的、封装好的、可供直接使用的模块。
其主要由两部分组成:用来为类型或常量声明的头文件列表、具体实现的二进制文件。
所以SDK开发中的主要问题点集中在:
1 头文件是否能被使用的工程索引到
2 二进制文件是否能被使用的工程搜索到
本篇文章不写制作SDK的具体步骤,仅仅讨论制作SDK时的一些情形。
SDK开发中关于头文件设置:
凡是提供给外界使用的类、结构体、枚举、常量等,定义它们的头文件必须要在工程的Build Phases->Headers->public下面。并且这些头文件都需要包含在与SDK工程同名的头文件中(这条不是必须,只是这么做会显得更加规范。别人使用SDK的时候,只需要引入SDK同名的头文件即可)
设置库文件生成动态的还是静态的:
Project Name->Target Name->Build Settings->搜索框搜“Mach”->修改“Mach-O Type”为动态或静态,则相应可生成动态或静态的库文件。
先解释说明以下中出现的工程名字:
SDKDemo :制作的向外提供的SDK库文件(与SDK工程名同名)
SDKApp :引用SDK库文件(本文指的是SDKDemo)的App工程
SDKStatic :新建工程时,选择iOS->Framework & Library->Cocoa Touch Static Library 用来生成a文件的工程
SDKFramework : 是个Framework库文件(可能是动态的,也可能是静态的),用于模拟被SDK依赖的framework文件
下面分几种情况来讨论SDK开发的注意事项:
1 生成动态SDK库文件。
创建工程的时候,根据默认配置编译是生成动态库的。
App工程中引入动态库的时候,需要在
App工程:Project Name->Target Name->General->Embedded Binaries下添加引入的动态库。否则运行时会报如下类型错误:
嵌入动态库编译后,生成的App文件中会多一个Frameworks目录(可右键App文件查看包内容),里面全是Embedded Binaries下添加的动态库
2 打包为静态库
SDK工程:Project Name->Target Name->Build Settings->搜索框搜“Mach”->修改“Mach-O Type”为静态库
App工程引入静态库很简单,直接引入就行,不需要额外配置:
tips:
合并真机与模拟器版本时的命令格式为:
lipo -create 模拟器版本的路径 真机版本的路径 -output 合并后的版本存放路径
1 合并时lipo -create接收的模拟器版本和真机版本两个参数的前后顺序没有关系,合并后的版本通过命令查看架构信息显示结果是完全一致的。模拟器架构信息显示在前,真机架构信息在后。
2 合并后的版本无论替换真机版本的Framework中的目标文件还是模拟器版本的Framework中的目标文件,App工程中引入被替换的Framework后在真机和模拟器上都能跑起来
首先创建SDKStatic工程,生成一个a文件。
该工程只是简单继承了UIButton,并重写了initWithFrame方法。为每一个MyButton对象默认生成标题和背景色:
生成的a文件如下,可以看到里面包含了MyButtono文件:
在SDK工程中引入a文件。下面分两种情况来看生成的SDK库文件:
1 SDK库文件做成动态库(设置方法看开头部分)
a文件内容被整合进了SDK动态库文件中,引入App工程中时,只需要引入SDK动态库就可以了
2 SDK库文件做成静态库(设置方法看开头部分)
包中的信息:
a文件内容同样被整合进了SDK静态库文件中,这个更好理解。引入App工程中时,只需要引入SDK静态库就可以了
总结下:
制作SDK库时,如果有依赖的a文件,则最终生成的SDK库文件会合并a文件的内容,而不论SDK库文件是动态还是静态的。
下面的SDKFramework是个Framework库文件(可能是动态的,也可能是静态的)
SDKFramework工程添加的内容和SDKStatic工程是一样的。也是自定义MyButton,默认生成标题和背景色(拷贝文件到工程):
SDKDemo工程自定义了MyView,默认生成的MyView对象添加了一个MyButton按钮和背景色:
1 如果framework文件是动态库
a SDK打包为静态库,如下:
静态SDK包和动态SDKFrameworkframework文件是彼此独立的。引入静态SDK包时,必须也导入SDKFrameworkframework,否则编译不过,因为静态包有引入动态库中的符号。
b SDK打包为动态库,如下:
两者还是彼此独立的。动态SDK包中会记录依赖的动态framework rpath,App运行时,dyld会根据这个信息去加载对应的framework依赖文件。如果找不到App将会在启动时奔溃
2 如果framework文件是静态库
a 首先SDK打包为动态库看看:
经实践,依赖的静态库会被整合进动态SDK包自身中。App中引入时,只需要导入SDK包就可以。我们在SDKApp中导入SDKDemo,运行可以看到如下效果:
b 再看看SDK打包为静态库:
根据上面截图中信息,App中导入SDK包时,也必须导入依赖的framework了。否则编译时将会出现如下图所示找不到符号的错误:
追加导入依赖的framework,再次编译运行。OK!!!
总结:
1 依赖的framework为动态库
制作的SDK库文件不论动态还是静态的。和依赖的framework文件本身是彼此独立的,不会发生符号整合的现象
2 依赖的framework为静态库
如果制作的SDK库文件是动态的,则依赖的framework静态库内容会被整合进SDK库文件中
如果制作的SDK库文件是静态的,则彼此是独立的
这里又得分几种情况讨论:
1 Podfile中不使用use_frameworks! pods库生成的是a文件
a 如果SDK制作成静态库:
SDK静态库不会整合Pods里三方库中的符号,最终导入App工程时,需要SDK静态库、Pods中的三方库文件一起导入
b 如果SDK制作成动态库:
Pods库中的符号会被合并整合进入SDK库中,导入工程时,只需要导入SDK包就OK了
2 Podfile中使用use_frameworks! pods库生成的是framework文件。其中Pods_工程名framework文件是个静态库,管理的第三方库生成的是framework动态库
a如果SDK制作成动态库:
SDK中会包含引入三方库的rpath,App中引入SDK包时,也必须引入三方库,否则dyld加载不了指定库导致App启动时奔溃
b 如果SDK制作成静态库:
静态SDK中会忽略Pods中的库中定义的符号(也即彼此是独立的)。如果静态SDK中引用了动态pods库中定义的符号,只要在App工程中也导入pods中动态库,并在embeded binaries中添加。一样是可以编译运行的。
其实怎么编译,SDK工程中是个什么情形都不重要。重要的是要明白库文件的本质,及它是如何发挥作用的?在什么阶段发挥作用?然后学会查看编译运行时的报错信息,并配合使用otool、nm、lipo、ar、file等这些命令去查看库文件的一些信息,最终追踪定位到问题。
原谅我最后都没怎么贴图了,因为流程都和前面差不多。我也写的手累了。如果你还有什么疑惑可以在下面评论,我会尽量及时回复。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)