私のiPhoneアプリに共有拡張機能を統合したい。アプリケーションには電話帳の連絡先の一部を含むsqliteデータベースが含まれています。共有エクステンションをappに追加し、エクステンションを共有アクティビティビューコントローラにも表示します。しかし、問題は、私はメインアプリのsqliteデータベースにアクセスできないということです。拡張でデータベースパスを記録すると、メインアプリケーションのsqliteデータベースパスとは異なるパスが表示されます。ですから、メインアプリケーションデータベースにアクセスしてsqliteからデータをフェッチする方法について教えてください。共有拡張カスタムビューコントローラにそれらを表示し、新しいデータをデータベースに挿入することもできます。sqlite dbを共有してiPhoneアプリに共有する
答えて
あなたは、データベースのパスを見つける必要があるまず:あなたは、DBファイルを共有するために必要なすべての
let ShareableDb = NSData(contentsOfFile: checkPath())
ザッツ:パスを取得した後
func checkPath()->String {
let dbPath = ""
let filemgr = FileManager.default
let dirPaths =
NSSearchPathForDirectoriesInDomains(.documentDirectory,
.userDomainMask, true)
let docsDir = dirPaths[0]
let databasePath = docsDir.appending("/dbName.sqlite") as NSString
if !filemgr.fileExists(atPath: databasePath as String) {
dbPath = databasePath
}
return dbPath
}
は、あなたが今のように共有可能なDBファイルにアクセスすることができます。それがあなたに役立つことを願っています。主なアプリケーションと共有拡張の間
私は、アプリケーショングループとメインアプリケーションのための異なるパスを取得します。 - メインアプリケーションからのDbパス /ユーザー/ dnk /ライブラリ/開発者/ CoreSimulator/Devices/3AEA77CB-EDC4-4484-9FA4-BAA92B98D277/data/Containers/Data/Application/9B9A59C1-74A4-4BF8-9E99-40A4660E0ED4 /Documents/DB.sqlite - アプリケーショングループからのDbパス /Users/dnk/Library/Developer/CoreSimulator/Devices/3AEA77CB-EDC4-4484-9FA4-BAA92B98D277/data/PluginKitPlugin/202A137C-D65B -4ECD-9BE2-5FC15135ABA4/Documents/DB.sqlite –
共有UserDefault SQLiteの:
NSUserDefaults
データを共有するために拡張
- を「アプリケーショングループ」のメインアプリでのデータ転送のための機能でを追加します。
[NSUserDefaults standardUserDefaults]
ドキュメントディレクトリにsqliteファイルをコピーした場合は、[[NSUserDefaults alloc] initWithSuiteName:@"group.com.XXX.XXX"];
と置き換えてください。だから、へ
try! FileManager.default.url(for:.documentDirectory, in:.userDomainMask,appropriateFor: nil, create:false).appendingPathComponent(fileName)
からドキュメントディレクトリのパスを変更し
let fileManager = FileManager.default
let directory = fileManager.containerURL(forSecurityApplicationGroupIdentifier: "group.com.xxx.xxx")
return directory!.appendingPathComponent(fileName).path
- 選択に必要なクラスのための
Target Members
(メイン・プロジェクトの両方と 拡張) - インポートする必要がある場合拡張子のあるポッドを編集してポッドファイルを編集する
target 'Main_App' do # Comment the next line if you're not using Swift and don't want to use dynamic frameworks use_frameworks! target 'Main_App_extension' do use_frameworks! inherit! :search_paths pod 'FMDB’ pod 'Kingfisher' end end
- 1. iPhoneアプリ間でsqliteデータベースを共有する
- 2. iPhone共有ボタン
- 3. アプリ共有ファイル
- 4. iOS App内でSqliteをiTuneファイル共有で共有する。
- 5. チームとの仮のiPhoneアプリの共有
- 6. Instagram iPhone共有イメージ
- 7. Androidアプリに共有するためのカスタム共有モーダル
- 8. UIActivityViewController共有アプリ名
- 9. iOSアプリ共有アセット
- 10. Tomcat JDBC共有DBリソース
- 11. 共有DBアクセス方法
- 12. iPhoneアプリ間でcode&xibファイルを共有するには?
- 13. iPhoneアプリとapplewatchの間でデータを共有するには?
- 14. iphoneアプリからリンクを共有するには?
- 15. SQLiteデータベース情報を共有する
- 16. Angular2共有コンポーネントが共有されていない共有コンポーネント
- 17. SQLite接続が共有キャッシュモードで一時テーブルを共有しますか?
- 18. iPhoneとBlackBerryの共有ライブラリ
- 19. 共有拡張がiPhone
- 20. プロセスプールでDB接続を共有する
- 21. 私のアプリを共有するには?
- 22. iPhoneでビデオを共有する
- 23. Android共有アプリのプライベートファイル
- 24. EmberJSアプリの共有ボタン
- 25. アプリ間のIoT共有ファイル
- 26. のiOSのWebView共有アプリ
- 27. dockerfile VOLUMEを使用してレジストリにmysql DBを共有する
- 28. re-structure共通のオープンdb接続を共有するFlaskルート
- 29. iPhone OBJ-C:MutableArrayを共有し、2 ViewControllers
- 30. PHP PDOを使用してsqliteで共有ページャキャッシュを有効にします
HII @VyasのKishan、私は..あなたは、このための任意のソリューションを持って、同じ問題に直面していますか? – Rivendell
@ V12、これに代わるソリューションが見つかりました。これにはApp Groupsを使用します。ユーザーが共有拡張を開いたときと、ユーザーがメインアプリケーションを開いてアプリケーショングループから情報を取得してsqlite dbに保存すると、すべての情報が保存されます。これが唯一の解決策です。 –
解決策を得た:私はあなたに私が従ったステップをお送りします。 – Rivendell