ios - xcode编程 - 新版xcode




Xcode 7.3 Swift的语法突出显示和代码完成问题 (4)

我对XCode 7.3有一个非常令人沮丧的问题(但是,这个问题在我安装XCode 7.2后仍然存在)和Swift代码,我希望其他人有这个问题并且知道如何解决它。 语法高亮和代码完成在Objective-C文件中完美地工作,并且在Swift代码中调用其他Swift对象时也可以正常工作。 但是,Swift代码中提到的任何Objective-C对象或方法都没有语法高亮,并且XCode不会完成任何Objective-C声明的方法或属性。 一切都编译好,运行得很好。

我还应该补充一点,我也尝试过彻底清理XCode。 我删除了所有派生数据,删除了所有XCode缓存,并删除了我的XCode首选项文件(除了在重新安装之前显然删除了XCode.app存档)。

这使得在Swift中开发变得非常困难。 我不想这样做,但如果我找不到解决方法,我将被迫回到使用Objective-C。


如果以上都不适合您并且您正在使用Cocoapods,您可以尝试切换到Carthage。

我尝试了在Google上找到的所有建议都无济于事。 但是Cocoapods似乎一直在出现,因为许多黑客试图修复它。 我一直在阅读Carthage,以及它如何不修改你的项目,强迫你使用工作区,或者可能用头文件填充你的构建文件夹(这会混淆Xcode并导致语法高亮和自动完成中断)。

在进行切换之后,我还没有遇到任何问题,说实话,我更倾向于花费很少的开销来获得一个干净的解决方案。 这篇文章真的让我回家了。


我也有同样的问题。 但终于解决了它。 我做了两个改变,不知道哪个是关键点,但你可以尝试所有。

  1. 删除模块缓存

在与项目的Derived Data相同的文件夹中是模块缓存。 当代码完成停止工作时,删除它修复它。

关闭Xcode并删除〜/ Library / Developer / Xcode / DerivedData / ModuleCache目录。

  1. 更改启用模块值

转到目标的“ 构建设置” ,然后搜索“ 启用模块”

如果 ,则将其更改为 ,您可能会遇到一些构建错误,只需将其更改回“ 是”

完成上述两个步骤后,您应该清理(​​Shift + Command + K)您的项目。

现在您可以解决问题。


这可能不再是必要了,但我仍想发布这个:

在本文发表时,最新版本的cocoapods(1.0.0.beta.8)要求您为每个Xcode目标定义pod。

在我的例子中,我有一个针对项目目标和测试目标的类编译。 由于懒惰,我只向主要目标添加了一个吊舱。

现在使用A类代码我使用import NAME添加了pod框架,并尝试使用框架的类。 Xcode不会突出显示我使用新类的特定代码,但编译和运行工作正常。 在完成对话框中,变量的类型是<<error type>>

解决此问题的方法: 在Podfile中将新添加的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添加到目标。 在这些旁边,我向AppUITests添加了“RxTest”。

(选择的豆荚是我项目的例子,没有广告意图:-))


所以似乎问题出在CocoaPods上。 我使用Cocoapods作为静态库而不是框架。 切换到框架(在我的Podfile中使用use_frameworks! )并将库导入Swift已解决了我的所有问题。 我猜这些第三方库标题对于XCode来说太过分了。 无论哪种方式,问题现在都已解决。 我希望这可以帮助将来的某个人。





xcode7.3