Ios 在Swift类中使用Dropbox或任何第三方框架

Ios 在Swift类中使用Dropbox或任何第三方框架,ios,xcode,swift,dropbox-api,Ios,Xcode,Swift,Dropbox Api,我正在尝试编写一个使用Dropbox Sync API的swift类,但无法让swift看到框架。我的项目中的objective C可以成功地使用Dropbox框架。我有一个桥接头,它似乎是在项目设置和引用中正确设置的。但在我的swift文件中,我似乎什么也没做 这个目标C代码在我的项目中起作用,我正试图在Swift中复制它: #import <Dropbox/Dropbox.h> ... if ([DBAccountManager sharedManager].linkedAc

我正在尝试编写一个使用Dropbox Sync API的swift类,但无法让swift看到框架。我的项目中的objective C可以成功地使用Dropbox框架。我有一个桥接头,它似乎是在项目设置和引用中正确设置的。但在我的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];
    }];

有没有想过如何让我的swift代码能够看到Dropbox框架?

我没有设法解决这个问题。相反,我将Dropbox框架的所有用法抽象为目标C类,并在我的swift代码中使用这些类,从而解决了这个问题。

事实上,我找到了这样做的方法:

创建一个伪.m文件,这样XCode将要求您创建一个桥接头,然后删除.m文件

在“项目生成设置”下,将DropboxSDK.framework添加到带有库的链接二进制文件下

打开桥接头文件并将其写入导入

XCode不会编译您的代码,每次打开Swift文件时,SourceKit服务可能会崩溃

这是因为Dropbox SDK中至少在Swift环境中存在两个错误:

在Finder中打开之前链接的DropboxSDK.framework,然后导航到Headers文件夹

打开文件DBQuota.h并在@interface之前添加导入

打开文件DBSession+iOS.h并在@interface之前添加导入

现在,您可以在Swift文件中使用Dropbox SDK类

这将避免您在每个类上创建Objective-C包装器

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:"")
    }
}