Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift:使用私有框架_Ios_Swift_Frameworks - Fatal编程技术网

Ios Swift:使用私有框架

Ios Swift:使用私有框架,ios,swift,frameworks,Ios,Swift,Frameworks,我用Xcode构建了一个iOS Swift框架 在编写代码之后,我构建了这个项目,并将.framework文件放在Products文件夹中进行测试 为了测试框架,我打开了一个新的应用程序,拖放了以前构建的.framework文件,并将其添加到我的应用程序项目的嵌入式二进制文件列表中 要将其导入我的ViewController.swift类,我编写了: import frameworkName 在这里之前没有问题,这意味着项目可以看到框架。 当我尝试在框架内使用公共类时: var x : cla

我用Xcode构建了一个iOS Swift框架

在编写代码之后,我构建了这个项目,并将.framework文件放在Products文件夹中进行测试

为了测试框架,我打开了一个新的应用程序,拖放了以前构建的.framework文件,并将其添加到我的应用程序项目的嵌入式二进制文件列表中

要将其导入我的ViewController.swift类,我编写了:

import frameworkName
在这里之前没有问题,这意味着项目可以看到框架。 当我尝试在框架内使用公共类时:

var x : className?
我得到以下错误:

'className' is unavailable: cannot find Swift declaration for this class

这是什么意思?问题是什么?

当您从工作区中引用products目录中的框架时,请确保位置为“Build products”,文件名仅为框架名称,而不包含任何其他路径组件


如果您引用的框架不在您的工作区中,我建议使用,而不是将其直接复制到您的存储库中。这将使版本控制更加容易,并将确保为模拟器和设备正确构建版本。

要实现自定义框架,您确实需要做很多事情

首先,确保在正确的设备上使用ur框架。也就是说,框架只能在相应的设备上使用(模拟器、设备和Mac中的任何一个)。换句话说,如果框架是在模拟器上构建的,那么项目导入框架A只能通过编译并在模拟器上成功构建

另外,如果需要通用版本,-lipo命令是您需要进一步探索的

第二,在实现ur框架的过程中,确保您希望在外部使用的所有类、方法和变量都从
Public
开始


第三,检查ur项目设置
嵌入式二进制文件
链接框架和库
是否包含ur框架。

类是否标记为public?你一定有类似于公共类的类名{…}你解决了这个问题吗?实际上没有,但我没有花时间在它上面,我已经添加了答案。这是肯定的。请检查您是否可以创建fat库,您可以看到以下链接:从他的描述中,听起来他不像是在同一个工作区中为框架和项目工作。