Ios Xcode 7.3 Swift语法突出显示和代码完成问题
我在XCode 7.3和Swift代码方面遇到了一个非常令人沮丧的问题(然而,自从我安装了XCode 7.2以来,这个问题一直存在),我希望其他人也遇到了这个问题,并且知道如何解决它。语法高亮显示和代码完成在Objective-C文件中工作得很好,在调用Swift代码中的其他Swift对象时也工作得很好。但是,Swift代码中提到的任何Objective-C对象或方法都不会得到语法突出显示,XCode也不会完成任何Objective-C声明的方法或属性。一切编译和运行都很好 我还应该补充一点,我也尝试过完全干净地安装XCode。我删除了所有派生数据,删除了所有XCode缓存,并删除了我的XCode首选项文件(当然,在重新安装之前还删除了XCode.app存档)Ios Xcode 7.3 Swift语法突出显示和代码完成问题,ios,xcode,swift,xcode7.3,Ios,Xcode,Swift,Xcode7.3,我在XCode 7.3和Swift代码方面遇到了一个非常令人沮丧的问题(然而,自从我安装了XCode 7.2以来,这个问题一直存在),我希望其他人也遇到了这个问题,并且知道如何解决它。语法高亮显示和代码完成在Objective-C文件中工作得很好,在调用Swift代码中的其他Swift对象时也工作得很好。但是,Swift代码中提到的任何Objective-C对象或方法都不会得到语法突出显示,XCode也不会完成任何Objective-C声明的方法或属性。一切编译和运行都很好 我还应该补充一点,我
这使得在Swift中发展非常困难。我不想这样做,但如果我找不到解决这个问题的方法,我将被迫回到使用Objective-C。我也有同样的问题。但最终还是解决了。 我做了两个改变,不确定哪一个是关键点,但你可以全部尝试
现在,您可以修复这个问题。我们在一个混合的ObjC/Swift项目中遇到了相同的问题。尝试了所有关于删除派生数据等的建议,但均无效。有时它有帮助,但不是以可复制的方式,一段时间后它停止工作。 加尔文在这篇文章中的帖子让我了解了与模块相关的构建设置。然而,另一个设置以可复制的方式解决了代码完成/着色问题:对于我们的主要项目,设置将_模块(包装下)从是定义为否就是解决方案 注:
- 我原以为这会破坏我们项目中的ObjC/Swift互操作性,但这仍然有效。似乎该设置仅用于框架目标。()
- 这个项目设置已经好几个月没有更改了,但代码完成问题直到最近才出现,我和我的同事都遇到了
- 所以问题似乎出在椰子荚上。我使用CoCoapod作为静态库,而不是框架。切换到框架(在我的Podfile中使用
use\u frameworks!
)并将库导入Swift解决了我的所有问题。我猜所有这些第三方库头对于XCode来说都太多了。不管怎样,问题现在已经解决了。我希望这对将来的人有所帮助。这可能不再必要了,但我仍然想发布以下内容:
在撰写本文时,cocoapods的最新版本(1.0.0.beta.8)要求您为每个Xcode目标定义pod
在我的例子中,我为项目目标和测试目标编译了一个类。由于懒惰,我只在主要目标上添加了一个pod
现在在类A
的代码中工作,我使用import NAME
添加了pod框架,并尝试使用框架的类。Xcode不会突出显示我使用新类的特定代码,但编译和运行工作正常。在完成对话框中,变量的类型为
解决此问题的方法:在pod文件中将新添加的pod添加到所有目标中,类A
是的成员。
现在,Xcode为所有目标找到了必要的框架,代码高亮显示再次起作用
编辑1:
一种可能的解决方案是定义一个共享POD列表,如我的示例中所示:
platform :ios, '8.4'
use_frameworks!
inhibit_all_warnings!
def all_pods
pod 'MPMessagePack'
pod 'SwiftyDispatch'
pod 'BFKit'
pod 'Timepiece'
pod 'Alamofire'
pod 'AlamofireSwiftyJSON'
end
def testing_pods
pod 'Quick'
pod 'Nimble'
end
target 'App' do
all_pods
end
target 'AppLogicTests' do
all_pods
testing_pods
end
target 'AppUITests' do
pod 'RxTest'
all_pods
testing_pods
end
post_install do |installer|
installer.pods_project.targets.each do |target|
puts target.name
end
end
这将向所有目标添加所有POD,并向目标添加所有测试POD。我在这些应用程序旁边添加了“RxTest”
(选择的豆荚是我的项目的例子,没有广告宣传的意图:-)如果上面的这些都不适合你,并且你正在使用椰子豆荚,你可以尝试切换到迦太基 我尝试了在谷歌上找到的每一个建议,但都无济于事。但一直以来,Cocoapods似乎是许多黑客试图修复它的原因之一。我一直在读迦太基,以及它如何不修改您的项目,不强迫您使用工作区,也不可能用头文件填充您的构建文件夹(这会混淆Xcode,并可能导致语法突出显示和自动完成中断)
在做出转换后,我还没有遇到任何问题,老实说,我更喜欢有一个干净的解决方案,而不是一点点的开销。真的为我开车回家了 不幸的是,这两种伎俩似乎对我都不起作用。不过,谢谢您的努力,我相信这可能会帮助其他人。对我来说很有用,但我必须在每次生成后进行清理,以恢复突出显示和自动完成功能删除模块缓存并执行清理和清理生成文件夹为我做到了这一点,谢谢!哈哈,它又坏了。Xcode是Xcode,有些事情永远不会改变…@Galvin我在8.1上。。。不幸的是,Xcode团队似乎无法让代码内省和自动完成功能可靠地工作。我发誓我从Xcode 4或5开始就有这些问题。永远不会变好。创建一个新用户,看看问题是否发生在那里。你说的新用户是什么意思?你是说一个