我正在尝试编写一个使用Dropbox Sync API的swift类,但无法快速查看框架。我项目中的目标C可以成功使用Dropbox框架。我有一个桥接标题似乎在项目设置和引用<Dropbox/Dropbox.h>
中正确设置。但在我的swift文件中,就好像我什么都没做。
我的项目中的这个目标C代码是有效的,我正在尝试在Swift中复制:
#import <Dropbox/Dropbox.h>
...
if ([DBAccountManager sharedManager].linkedAccount == nil) {
[[DBAccountManager sharedManager] linkFromController:self];
[[DBAccountManager sharedManager] addObserver:self block:^(DBAccount *account) {
DBFilesystem *fileSystem = [[DBFilesystem alloc] initWithAccount:account];
[DBFilesystem setSharedFilesystem:fileSystem];
}];
正如我所说,我在Xcode自动为我创建的桥接标题中有<Dropbox/Dropbox.h>
。但是,这个快速代码无法编译错误“使用未解析的标识符”DBAccountManager''
import UIKit
class PiecesListTableViewController : UITableViewController {
override func loadView() {
super.loadView()
// This fails with unresolved identifier 'DBAccountManager'
let accountManager = DBAccountManager.sharedManager
// As does this
let accountManagerNew = DBAccountManager(appKey:"", secret:"")
}
}
有关如何让我的swift代码能够看到Dropbox框架的任何想法吗?
答案 0 :(得分:0)
我没有设法解决这个问题。相反,我通过将Dropbox框架的所有用法抽象为客观的C类并在我的swift代码中使用它来解决这个问题。
答案 1 :(得分:0)
实际上我找到了这样做的方法:
创建一个虚拟.m
文件,以便XCode要求您创建桥接标头,然后删除.m
在项目构建设置下,在链接二进制文件库
打开bridging-header
文件并将其写入#import <DropboxSDK/DropboxSDK.h>
XCode不会编译您的代码,每次打开Swift文件时,SourceKit Service都可能崩溃。
这是因为Dropbox SDK中存在两个错误(至少对于Swift环境而言):
在 Finder 中打开之前链接的 DropboxSDK.framework ,然后导航到Headers
文件夹
打开文件DBQuota.h
并在#import <Foundation/Foundation.h>
@interface
打开文件DBSession+iOS.h
并在#import <UIKit/UIKit.h>
@interface
醇>
现在您可以在Swift文件中使用Dropbox SDK类。
这将使您免于在每个类上创建Objective-C包装器。