对于由多个私有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文档表明它是)。有人看到我可能遗失的东西吗?