从开发Pod框架中混合Swift和ObjC

时间:2016-08-30 14:50:36

标签: objective-c swift cocoapods

对于由多个私有git模块和一些本地定义的Podspec组成的软件项目,我试图将Swift作为编程语言引入。不幸的是,当导入所述子模块作为框架时,我似乎遇到了使ObjC / Swift代码混合工作的一些问题。我已经将我的问题简化为最小的代码,以排除任何奇怪的依赖性问题,所以这就是它现在的样子。

基本上我有以下工作区:

SomeProject.xcworkspace
-> SomeProject.xcproject
--> SomeProject/
---> <Some App Code>
-> SomeFramework/
--> SomeFramework.xcproject
--> SomeFramework/
---> ObjC.h
---> ObjC.m
---> Swift.swift

此项目由以下Podfile管理:

# Uncomment this line to define a global platform for your project
source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!
platform :ios, "8.0"

workspace 'SomeProject.xcworkspace'

project 'SomeProject.xcodeproj'
project 'SomeFramework/SomeFramework.xcodeproj'

target "SomeProject" do

    project 'SomeProject'

    pod 'SomeFramework', source = { :path => './SomeFramework' }
end

target :SomeFramework do 
    project 'SomeFramework/SomeFramework.xcodeproj'

end

框架的podspec如下所示:

Pod::Spec.new do |s|
    s.name         = 'SomeFramework'
    s.version      = '1.0.0'
    s.summary      = 'Some Framework.'
    s.author       = { 'Author' => 'author@me.com' }
    s.source       = { :path => '.' }
    s.homepage = "<url>"
    s.license = "MIT"
    s.platform     = :ios
    s.ios.deployment_target = '8.0'

    s.source_files = 'SomeFramework/*'

    s.resource  = "SomeFramework.podspec"

    s.ios.frameworks   = 'Foundation'
end

基本上,在框架中,Swift和ObjC类都有一个打印东西的方法。在我的SomeProject中,我能够很好地达到这两个功能。

当我尝试在Framework中混合使用这两个类时,会出现问题。

如果我尝试使用ObjC类中的Swift类并将其导入为

#import "SomeFramework-Swift.h"

框架编译得很好,但是项目本身找不到生成的Dependency Pod的import语句(在新的pod安装之后)。如果我尝试将其导入为

#import <SomeFramework/SomeFramework-Swift.h>

框架本身无法编译。

我现在在这里失踪了。我使框架成为动态库,我启用了定义模块,并且我多次清理衍生数据。如果甚至可以从框架中混合和匹配ObjC / Swift(Swift文档表明它是)。有人看到我可能遗失的东西吗?

0 个答案:

没有答案