2017-06-25 13 views
0

Swift 3の構文で少し助けを得たいと思っています。私はかなり新しく、単純なものではない私が読んだ本。私はGoogleの周りに狩りしようとしたとちょうど私が探しているものを見つけるのに苦労するようだ。私はCouchbase Liteで何かを試しています。Swift 3クラス/プロパティリファレンス構文 - Couchbase Lite

私のAppDelegateクラスでは、 "var database:CBLDatabase!"のように変数を作成します。 "FUNCアプリケーション(didFinishLaunchingWithOptions)" では

私はのstartSession(呼び出し)と、その関数が、その後適切に使用して、私のデータベースを開くOpenDatabaseメソッドを()、呼び出します。

トライデータベース= CBLManager.sharedInstance()openDatabaseNamed(dbnameは、 with:options)

私はクエリを使用してデータベース内のデータにアクセスできます。この時点で、私はいくつかのデフォルトのグローバル変数といくつかの配列をアプリのどこかで使うために設定しています。

私のアプリケーションにはいくつかのビューコントローラがあり、そのうちの1つでは、データベースにクエリを戻したいと思っています。私はAppDelegateクラスで設定した "データベース"オブジェクトを使って別のクエリを設定したいと思います。

からCreateQuery()

QUERY2 = AppDelegate.database.viewNamed(「myqueryという」)しましょうが、私は声明を出し入力し始めるとオートフィルはそのようなものを見つけることはありません:。私はそれのようなものだろうと思いました。私は他の記事でいくつかの助けを見つけましたが、私は決して正しい構文を得ることはできません。

ご協力いただければ幸いです。

おかげで、 デビッド

編集:私はAppDelegateクラス定義の上に置くことにより、「データベース」のグローバル変数を作成しましたが、私はそれがベストプラクティスですわからないんだけど、私はグローバル最小化したいです可変的使用。

+0

AppDelegateはクラスの名前ですか?その後、データベースはインスタンス変数です.AppDelegateの静的メンバーにアクセスしています。あなたのケースではデータベースを静的にすることができます。つまり静的varデータベース:CBLDatabase! –

答えて

0

AppDelegateの代わりに、View Controller全体にアクセスする必要があるグローバル変数をホストするためのシングルトンパターンを使用することをお勧めします。データベースインスタンスを作成して利用可能にする "DatabaseManager"シングルトンクラス他のView Controllerに送信します。例としてcode snippetを参照してください。

+0

意味があります。 AppDelegateのすべての機能をこの新しいDatabaseManager.swiftクラスに移行する場合は、didFinishLaunchingWithOptions関数の元のコードをそのまま使用しますか?私は基本的に:ロギングを有効にし、ログインし、セッションを開始し、証明書を設定します。 – Davecity

+0

本当に機能に依存します。 CBへの実際の呼び出しをDatabaseManagerに実装し、AppDelegateまたは他のView Controllerから呼び出されるラッパーAPIを公開することができます。レプリケータの作成時に、DatabaseManager内で自動的に複製の際に証明書を設定するなどの機能があります – rajagp

関連する問題