加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

macos – 我可以在Swift中编写Spotlight导入程序吗?

发布时间:2020-12-14 04:54:32 所属栏目:百科 来源:网络整理
导读:我需要为我在 Swift中编写的应用程序编写Spotlight Importer,并且指的是 Writing a Spotlight Importer的官方Apple指南. 这似乎很简单,但是创建Spotlight Importer项目会为Objective-C实现创建默认设置.现在,使用Objective-C并不是一个大问题(我过去曾经使用
我需要为我在 Swift中编写的应用程序编写Spotlight Importer,并且指的是 Writing a Spotlight Importer的官方Apple指南.

这似乎很简单,但是创建Spotlight Importer项目会为Objective-C实现创建默认设置.现在,使用Objective-C并不是一个大问题(我过去曾经使用过很多次)但是我为我的应用程序编写的所有内容都是在Swift中,所以我真的很想写Swift中的导入器也是为了避免在语言之间切换,所以我也可以共享一些我已经为读/写文件所做的代码.

首先,是否可以使用Swift而不是Objective-C编写Spotlight Importer?如果是的话,我应该从哪里开始(例如,如果我采用Objective-C起点,我会做什么来切换到Swift)?

解决方法

由于Apple将Swift作为一种语言与任何现有的Objective-C项目完美兼容,我建议您先从让事情变得更容易的事情开始.

如果你最了解Swift那么没有什么能阻止你使用它 – 无论你想要什么样的项目.如果你想按照为Objective-C编写的教程而不是为Swift更新,我认为你有两个选择(我个人建议现在选择第二个选项):

>从头开始在Swift中编写与Objective-C相同的逻辑(几乎所有可能在Objective-C中都可以使用Swift).为此,您需要了解Objective-C的基础知识以及Swift中相应的语法和功能.
>从Objective-C开始,按照教程进行操作,并在开始时使事情变得更容易(无需真正理解教程详细信息).然后使用混合和匹配Swift代码以及Objective-C代码来定制代码以满足您的需求或使用您自己的预先存在的类扩展它.

更具体地说,第二个选项:

如果你想编写新的类只需使用Swift – 你可以完全使用Swift中的Objective-C编写的所有内容,反之亦然.如果您觉得需要更改已经用Objective-C编写的类,您可以选择以下选项:使用新的Swift类扩展用Objective-C编写的类,在Swift中重写该特定文件或直接编辑Objective-C文件.

要了解有关如何混合和匹配Swift代码以及Objective-C的更多信息,我建议您阅读Apples official documentation.它是Apple工程师为开发人员编写的免费iBook“使用Swift with Cocoa和Objective-C”的一部分.

不幸的是,Apple实际上似乎确实只是在目前的XCode中为Objective-C提供了Spotlight导入器的模板.不知道为什么会这样 – 我看不到任何阻止他们支持Swift的东西.我们应该向Apples Bug Reporter报告这一点,以强调人们实际上是在要求这样做.

希望我在这里没有忽略任何东西,否则我的回答将毫无意义. ^^

更新(请求)
以下是从哪里开始实施第一种方法的一些步骤:

>首先使用最新的XCode版本创建Spotlight Importer项目
– 创建一个新的“Cocoa Touch”类,其名称与预先创建的主要Objective-C类完全相同(例如“MySpotlightImporter”)
>在课程创建期间询问时,选择Swift和“创建桥接标题”
– 重新实现在Swift类中的ObjC-MySpotlightImporter类中编写的代码(您可能希望在Swift和Objective-C中创建一个具有Core Data支持的Cocoa App以了解它们之间的差异)
– 我不确定你是否可以在Swift中重写GetMetaDataFile.m,我在测试中无法理解,所以你可能需要保留它(现在)
– 如果您在指向某些缺失配置的过程中收到任何错误,只需在项目“构建设置”中搜索相关文件/类并在那里应用您的更改

我希望这有助于让你开始并且足够具体.我试图自己做一些必要的更改,以便在Swift中提供一个示例项目,但不幸的是我无法在有限的时间内完成它.您可能需要考虑公开提供代码(例如,在GitHub上发布此处发布的链接),以防您决定自行移植,以便其他人也可以从中获益.

祝好运!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读