Xcode显示嵌入式框架错误,但编译正常。

4
我有一个带有自定义Swift框架的应用程序,该框架用于在不同平台之间共享业务规则。每次尝试使用此框架中的类时,Xcode都会显示错误,但是一切都可以编译成功。它还阻止我使用关于该框架的自动完成功能。
我已经尝试过清理和删除派生数据,但没有任何结果。
我的框架通过子模块包含在我的主项目中,并在我的主项目上手动链接。
对此有什么想法吗?

enter image description here


你的Xcode版本是多少? - Mohamed Raffi
还要确保该文件是框架目标的一部分。 - Anbu.Karthik
@MohamedRaffi 9.3.1 - Yaman
@MohamedRaffi 是的,我有多个目标。 - Yaman
@Anbu.karthik 刚刚查看了链接,很遗憾对我来说没有相关内容。 - Yaman
显示剩余16条评论
6个回答

1
我认为你的问题在于框架的搜索路径。我假设它现在是针对目标设置的,但不是针对整个项目设置的(或者在项目中设置不正确)。你可以仅为项目设置它,并让Xcode处理目标路径。
Xcode有一个单独的编译过程来计算自动完成引用,与实际构建项目的编译过程分开。如果您意外地将框架搜索路径设置为目标而不是整个项目,则您的项目似乎会构建成功。 https://medium.com/@_achou/one-weird-trick-to-fix-autocomplete-in-xcode-9f19dc856944 解决方案1:在“项目 - 构建设置”中修复框架搜索路径。
解决方案2:从项目中删除框架,前往“目标 - 构建阶段 - 嵌入式框架”,点击“+(添加)”,然后选择“添加其他”,并在您的目录中找到它。

1

尝试移除你的框架,然后在关闭XCODE之前使用CMD+B,再重新添加框架并再次使用CMD+B。顺便问一下,你最近是否移动了项目文件夹?

Try this


1

我的自定义 Swift 框架类:

public class Myfile {
    public func textmethod(){
        print("The value of textmethod")
    }
}

将框架导入项目中

我的ViewController文件:

import MyFrameWork

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let log = Myfile()
        log.textmethod()
    }

}

这正是我正在做的。 - Yaman
1
现在你能访问类名吗? - KAVIYA VENKAT
不,我的意思是,这就是我一开始要做的事情。 - Yaman
1
你在框架中是否将文件名和类名命名为相同的名称?同时,请检查您的VC类是否已导入。 - KAVIYA VENKAT

0

我最近也注意到了同样的问题。我发现的解决方案是,在模拟器中运行应用程序,然后xCode才能开始识别框架,从而获得自动完成功能。

试试看吧..!


0
你在这个项目中使用git吗?听起来很奇怪,但我曾通过提交当前代码解决过类似的问题。

0

我最近也遇到了同样的问题。我通过在项目范围内将框架和头文件搜索路径设置为非递归,并直接指向正确的目录而不是子文件夹来解决它。然后我的目标从项目继承了搜索路径。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接