2016-10-03 6 views
2

私たちは現在、「メッセージ拡張機能」を含むiOS10アプリケーションを開発中です。Apple App Groupの共有ディレクトリを見つける方法

CoreDatas persistant store.sqliteをAppとExtensionで共有するために、共有されている「Apple App Group」ディレクトリを使用しています。これは正常に動作しています。

ここでは、デバッグの理由から店舗に手を差し伸べる必要があり、ディレクトリを見つけることができません。 Appsコンテナのディレクトリは完全に空であり、理にかなっています。しかし、私たちのデータベースをダウンロードするには?どういうわけかそれをプログラム的に到達可能な場所にコピーする必要がありますか?

  • 我々はすでに私たちの共有ディレクトリにmodel.sqliteを格納CoreDataを使用します。それをまとめると

  • すべてが起動しています。
  • アーカイブしたいものは、データベースをコンピュータにダウンロードすることです。

共有ディレクトリがない場合、Xcode->デバイスを使用してデバイスからAppコンテナーをダウンロードすることができます。しかし、共有ディレクトリを使用するので、.sqliteデータベースはコンテナ内にありません。

質問: .sqliteデータベースをデバイスからコンピュータにダウンロードするにはどうすればよいですか?

+0

いくつかのコードを見ると便利です。たとえば、共有されたコンテナが実際に空であることをどのように知っていますか? NSFileManager.defaultManager()内を見ましたか?containerURLForSecurityApplicationGroupIdentifier( "group.etc.etc。")? – inwit

+0

共有コンテナは空ではありません。 Appsコンテナはです。 – shallowThought

答えて

2
let sharedContainerURL :NSURL? = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.etc.etc") // replace "group.etc.etc" with your App Group's identifier 
NSLog("sharedContainerURL = \(sharedContainerURL)") 
if let sourceURL :NSURL = sharedContainerURL?.URLByAppendingPathComponent("store.sqlite") 
{ 
    if let destinationURL :NSURL = NSFileManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0].URLByAppendingPathComponent("copyOfStore.sqlite") 
    { 
    try! NSFileManager().copyItemAtURL(sourceURL, toURL: destinationURL) 
    } 
} 

上記のようなものは、アプリケーショングループの共有コンテナからアプリケーションのドキュメントディレクトリにファイルを取得します。そこから、Xcode>ウィンドウ>デバイスを使用してコンピュータに取得できます。

あなたはまた、Info.plistファイルにYESUIFileSharingEnabledを設定した後、アプリケーションのDocumentsディレクトリからファイルを取得するが、これは同様に、ユーザーにディレクトリの内容を公開しますことを心に留めてiTunesのファイル共有を使用することができます。しかし、開発/デバッグのためには大丈夫です。

+0

私はプログラム的にそれに到達する方法を知っています。とにかく答えを受け入れる。ありがとう。 – shallowThought

関連する問題