web-dev-qa-db-ja.com

Swiftブリッジヘッダー-宣言されていないタイプの使用 'FMDatabase'エラー

同じエラー(宣言されていないタイプの使用)で他のすべての投稿を調べましたが、それでもプロジェクトの何が問題なのか理解できません。

他の場合との違いは、AppDelegateクラスとViewControllerクラスでFMDatabaseを正常に使用できることですが、AppDelegateクラスとViewControllerクラスと同じプロジェクトではありますが、作成した別のクラスからは使用できません。

そして、「正常に使用する」とは、データベースとその中のテーブルにアクセスできることを意味します。

また、AppDelegateまたはViewControllerでFMDatabaseを使用するために、何もインポートする必要がなかったことにも注意してください。

これまでのところ(Xcode。6.4Swift 1.2):

  1. 単一のビューを作成しましたSwiftプロジェクト。

  2. Cocoapodsを使用してインストールされたFMDB( https://cocoapods.org/?q=fmdb

  3. FMDBのブリッジヘッダーを作成しました

AppDelegate.SwiftクラスとViewController.SwiftクラスからFMDatabaseを正常に宣言して使用できます。

AppDelegate.Swift

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    var database: FMDatabase? // OK
    ...

ViewController.Swift

class ViewController: UIViewController {

    var database: FMDatabase? // OK
    ...

DBUtil.Swiftで、「宣言されていないタイプ「FMDatabase」の使用」エラーが発生します。

DBUtil.Swift

class DBUtil {

    var database: FMDatabase? // Error: "Use of undeclared type 'FMDatabase'

}

再生機は Swift Bridging Header で入手できます。

ヒントやアイデアがありましたら、よろしくお願いします。

10
Jack G.

これは、DBUtilBridgingHeaderTestsターゲットの一部であるためです(ただし、アプリデリゲートとビューコントローラーは含まれていません)が、そのターゲットはFMDB(「Objective-Cブリッジヘッダー」)用に構成されていません。テストターゲットの設定は空です)。

次のいずれかを実行できます。

  1. テストターゲットからDBUtilを削除します。

    enter image description here

  2. または、テストターゲットのブリッジヘッダーを指定します。

    enter image description here

17
Rob

他の場合の返信をここに残します。同じエラーが発生しましたが、問題はブリッジヘッダーにあり、#import "FMDatabase.h"を書き忘れました。

1
user5273262

CocoaPodsを使用してFMDBをインストールした場合は、追加するだけです

import FMDB

fMDatabaseを使用しているSwiftファイル内。

1
balazs630

私の場合も同じエラーでした。 「必要に応じてアイテムをコピーする」にチェックマークを付けて、プロジェクトに.hファイルと.mファイル(フォルダーではない)のみを追加することで修正し、グループを作成して作成しました。次に、objcブリッジヘッダーを作成しました。

ターゲットのビルドフェーズ-バイナリとライブラリのリンク-libsqlite3.tbdを追加しました。埋め込まれたコンテンツにSwiftコードをYesに設定します。

これにより、この参照の問題が解決されました。

0
A.G