<legend id='Lx8Hb'><style id='Lx8Hb'><dir id='Lx8Hb'><q id='Lx8Hb'></q></dir></style></legend>

      <small id='Lx8Hb'></small><noframes id='Lx8Hb'>

      <i id='Lx8Hb'><tr id='Lx8Hb'><dt id='Lx8Hb'><q id='Lx8Hb'><span id='Lx8Hb'><b id='Lx8Hb'><form id='Lx8Hb'><ins id='Lx8Hb'></ins><ul id='Lx8Hb'></ul><sub id='Lx8Hb'></sub></form><legend id='Lx8Hb'></legend><bdo id='Lx8Hb'><pre id='Lx8Hb'><center id='Lx8Hb'></center></pre></bdo></b><th id='Lx8Hb'></th></span></q></dt></tr></i><div id='Lx8Hb'><tfoot id='Lx8Hb'></tfoot><dl id='Lx8Hb'><fieldset id='Lx8Hb'></fieldset></dl></div>

        <bdo id='Lx8Hb'></bdo><ul id='Lx8Hb'></ul>
      <tfoot id='Lx8Hb'></tfoot>

        iOS8:自定义 Swift 框架访问用 Objective-C 编写的外部框架

        时间:2023-05-17

        <small id='B9PT6'></small><noframes id='B9PT6'>

          <tbody id='B9PT6'></tbody>
          • <bdo id='B9PT6'></bdo><ul id='B9PT6'></ul>

          • <i id='B9PT6'><tr id='B9PT6'><dt id='B9PT6'><q id='B9PT6'><span id='B9PT6'><b id='B9PT6'><form id='B9PT6'><ins id='B9PT6'></ins><ul id='B9PT6'></ul><sub id='B9PT6'></sub></form><legend id='B9PT6'></legend><bdo id='B9PT6'><pre id='B9PT6'><center id='B9PT6'></center></pre></bdo></b><th id='B9PT6'></th></span></q></dt></tr></i><div id='B9PT6'><tfoot id='B9PT6'></tfoot><dl id='B9PT6'><fieldset id='B9PT6'></fieldset></dl></div>

          • <tfoot id='B9PT6'></tfoot>

              <legend id='B9PT6'><style id='B9PT6'><dir id='B9PT6'><q id='B9PT6'></q></dir></style></legend>
                  本文介绍了iOS8:自定义 Swift 框架访问用 Objective-C 编写的外部框架的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  限时送ChatGPT账号..

                  我正在尝试在 Swift 中创建一个名为 CouchbaseKit(Xcode 中的新目标)的自定义框架.在我的 CouchbaseKit 中,我需要访问完全用 Obj-C 编写的 CouchBaseLite Framework.我正在使用 Cocoapods 来管理 CouchBaseLite 和其他几个框架.下面是我的 podfile.

                  I'm trying to create a custom framework called CouchbaseKit (a new target in Xcode) in Swift. Inside my CouchbaseKit, I need to access CouchBaseLite Framework that's entirely written in Obj-C. I'm using Cocoapods to manage CouchBaseLite and a couple of other frameworks. Below is my podfile.

                  Podfile

                  # Uncomment this line to define a global platform for your project
                  link_with ['CouchbaseKit']
                  # platform :ios, '8.0'
                  
                  use_frameworks!
                  target 'CouchbaseDB' do
                  link_with ['CouchbaseKit']
                  
                  pod 'couchbase-lite-ios'
                  pod 'SwiftyJSON', '~> 2.2.0'
                  pod 'Alamofire', '~> 1.2'
                  pod 'XCGLogger', '~> 2.0'
                  end
                  
                  target 'CouchbaseDBTests' do
                  end
                  
                  target 'CouchbaseKit' do
                  end
                  
                  target 'CouchbaseKitTests' do
                  end
                  

                  项目内的 Pod:

                  对于我的 TARGETS,我在 Build Phases 中有以下设置.

                  For my TARGETS I have the following settings in Build Phases.

                  定义模块

                  允许框架模块中的非模块化包含

                  问题:当我尝试访问我的 CouchbaseKit(我的自定义框架)中的 CouchbaseLite 框架时,我收到一个错误,没有这样的模块 'CouchbaseLite' 不存在.

                  Problem: When I try to access the CouchbaseLite framework inside my CouchbaseKit (my custom framework), I get an error, "No such module 'CouchbaseLite' does not exist.

                  试过了:

                  1. 由于项目使用 Swift,我创建了一个 Objective-C 文件并点击您想配置一个 Objective-C 桥接头吗?"

                  即使在所有目标中将框架模块中的允许非模块化包含"设置为是",当我尝试 #import <CouchbaseLite/CouchbaseLite.h> 时仍然会出错在 CouchbaseKit.h

                  Even though Allow Non-modular Includes in Framework Modules is set to YES in all targets, I still get an error when I try to #import <CouchbaseLite/CouchbaseLite.h> in CouchbaseKit.h

                  这是我的自定义框架的构建阶段的样子 CouchbaseKit

                  Here is what my Build Phases looks like for my custom framework CouchbaseKit

                  问题:如何在我的自定义 Swift 框架中查看外部 Objective-C 框架 (CouchasebaseLite)?

                  Question: How can I see an external Objective-C framework (CouchasebaseLite) in my custom Swift framework?

                  推荐答案

                  不幸的是 Cocoapods 0.39 存在Transitive Vendor Dynamic Libraries Unsupported" 你会在最新的 couchbase-lite-ios 版本中看到这一点,包括二进制 CouchbaseLite.framework.这个不幸的问题让我很难受,我不得不重构一切以使用 Carthage,并在我的最终项目中手动管理我的框架.

                  Unfortunately Cocoapods 0.39 suffers from "Transitive Vendor Dynamic Libraries Unsupported" You'll see this with the newest couchbase-lite-ios release including the binary CouchbaseLite.framework. This unfortunately issue bit me so hard I had to refactor everything to use Carthage, and manually manage my frameworks in my final projects.

                  说到二进制发布的 CouchbaseLite.framework 只是缺少一个模块映射.

                  Speaking of which the binary released CouchbaseLite.framework is simply missing a module map.

                  添加一个到:CouchbaseLite.framework/Modules/module.modulemap

                  Add one to: CouchbaseLite.framework/Modules/module.modulemap

                  framework module CouchbaseLite {
                    umbrella header "CouchbaseLite.h"
                  
                    export *
                    module * { export * }
                  }
                  

                  然后,您将能够将此框架包含到桥接头中,并让您的动态框架正确嵌套.但是您可能需要像我一样切换到构建您的 CouchbaseKit.framework 以使用 Carthage.

                  You will then be able to include this framework into a bridging header, and have your dynamic framework nest properly. But you might need to switch to building your CouchbaseKit.framework to using Carthage like I did.

                  这篇关于iOS8:自定义 Swift 框架访问用 Objective-C 编写的外部框架的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:TWTweetComposeViewController 中的错误? 下一篇:引用资产目录并从框架中包含它是否会创建重复?

                  相关文章

                      <tfoot id='4uMvO'></tfoot>
                      • <bdo id='4uMvO'></bdo><ul id='4uMvO'></ul>
                    1. <i id='4uMvO'><tr id='4uMvO'><dt id='4uMvO'><q id='4uMvO'><span id='4uMvO'><b id='4uMvO'><form id='4uMvO'><ins id='4uMvO'></ins><ul id='4uMvO'></ul><sub id='4uMvO'></sub></form><legend id='4uMvO'></legend><bdo id='4uMvO'><pre id='4uMvO'><center id='4uMvO'></center></pre></bdo></b><th id='4uMvO'></th></span></q></dt></tr></i><div id='4uMvO'><tfoot id='4uMvO'></tfoot><dl id='4uMvO'><fieldset id='4uMvO'></fieldset></dl></div>
                    2. <legend id='4uMvO'><style id='4uMvO'><dir id='4uMvO'><q id='4uMvO'></q></dir></style></legend>

                      <small id='4uMvO'></small><noframes id='4uMvO'>