Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.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 #如果canImport()不能与CocoaPods一起正常工作。严重问题_Ios_Swift_Cocoapods_Ios Frameworks_Podspec - Fatal编程技术网

Ios #如果canImport()不能与CocoaPods一起正常工作。严重问题

Ios #如果canImport()不能与CocoaPods一起正常工作。严重问题,ios,swift,cocoapods,ios-frameworks,podspec,Ios,Swift,Cocoapods,Ios Frameworks,Podspec,我们遇到了一个非常奇怪的问题,这在我们的生产代码中造成了问题。基本上,我们已经创建了一个框架,它几乎没有单独的可选框架。现在,我们使用以下逻辑访问框架中的代码: #if canImport(optionalFramework) firstMethodFromTheFramework() secondMethodFromTheFramework() #endif 问题是,然后我们用cocoapod分发我们的主框架,即使客户端集成了额外的子类,我们的代码也不能引用额外的框架。因此它不导入框架,也不

我们遇到了一个非常奇怪的问题,这在我们的生产代码中造成了问题。基本上,我们已经创建了一个框架,它几乎没有单独的可选框架。现在,我们使用以下逻辑访问框架中的代码:

#if canImport(optionalFramework)
firstMethodFromTheFramework()
secondMethodFromTheFramework()
#endif
问题是,然后我们用cocoapod分发我们的主框架,即使客户端集成了额外的子类,我们的代码也不能引用额外的框架。因此它不导入框架,也不调用可选方法。因此,它不能完全工作,并产生了大量的问题。。。我们根本不明白,为什么IOS开发不允许这样的功能和架构? ​

更好的做法是将框架模块化,而不是创建巨大的框架,这只会增加规模和复杂性

如果客户机集成了可选框架,那么可能还有其他方法从可选框架访问框架

我们真的对整个情况有点不确定,这对我们的整个项目至关重要。 ​


我将再次澄清:我们的主框架根本不包括可选框架。它只使用#if canImport()标志。客户端应负责添加POD,然后framework应自动开始执行代码

我遇到了相同的问题,并通过以下方法解决了此问题:

在您的框架中安装可选的pod——假设它是Alamofire—(您将在最后删除),这样您就可以在这两个文件中找到路径

  • yourmwork.debug.xcconfig
  • yourmwork.release.xcconfig
  • 框架\u搜索\u路径复制此“${PODS\u配置\u BUILD\u DIR}/Alamofire”

    并从HEADER\u SEARCH\u path复制此“${PODS\u CONFIGURATION\u BUILD\u DIR}/Alamofire/Alamofire.framework/Headers”

    把你复制的东西放在任何地方,比如说笔记文件

    现在从框架pod文件中删除pod(Alamofire),并再次运行pod安装

    手动复制两个文件中的内容:

  • yourmwork.debug.xcconfig
  • yourmwork.release.xcconfig
  • 正如他们所做的那样 现在,如果您将框架添加到另一个项目中,并在该项目pod文件中安装optionalFramwork,那么一切都会顺利进行

    #如果可以导入(可选框架)。应该可以根据需要工作


    希望解决您的问题

    我也有同样的问题,它通过以下方式为我解决:

    在您的框架中安装可选的pod——假设它是Alamofire—(您将在最后删除),这样您就可以在这两个文件中找到路径

  • yourmwork.debug.xcconfig
  • yourmwork.release.xcconfig
  • 框架\u搜索\u路径复制此“${PODS\u配置\u BUILD\u DIR}/Alamofire”

    并从HEADER\u SEARCH\u path复制此“${PODS\u CONFIGURATION\u BUILD\u DIR}/Alamofire/Alamofire.framework/Headers”

    把你复制的东西放在任何地方,比如说笔记文件

    现在从框架pod文件中删除pod(Alamofire),并再次运行pod安装

    手动复制两个文件中的内容:

  • yourmwork.debug.xcconfig
  • yourmwork.release.xcconfig
  • 正如他们所做的那样 现在,如果您将框架添加到另一个项目中,并在该项目pod文件中安装optionalFramwork,那么一切都会顺利进行

    #如果可以导入(可选框架)。应该可以根据需要工作


    希望能解决你的问题

    你试过这个吗?我没有试过!我会再试一次。不过,我现在是否应该在我们的主框架Pod文件中包含这个可选Pod?然后,我应该将这个可选框架指定为弱框架,对吗?:)@SachinVas不工作。因为这个原因,它甚至没有通过验证。你能上传验证失败的日志吗?你试过吗?我没有试过!我会再试一次。不过,我现在是否应该在我们的主框架Pod文件中包含这个可选Pod?然后,我应该将这个可选框架指定为弱框架,对吗?:)@SachinVas不工作。因为这个原因,它甚至没有通过验证。你能上传验证失败的日志吗?