もうiOS11が出そうな時期だというのに、未だにiOS10がうまく使えていない。
Share Extensionを使うアプリを作っていて詰まったところが解決できたのでメモ。
Core DataとかApp Extensionとかいうワードで検索しても、iOS9までの方法しか見つけらんなくて大変困った。
NSPersistentContainerとかSQLiteとかそういうワードでの検索が必要だったようだ。
AppExtensionを使うアプリでCoreDataを使う時、XCODEが自動生成してくれるやつのままだと、ExtensionごとにSQLiteのデータベースファイルを作ってしまうので共有できない。
保存先ディレクトリを指定できればいい。
defaultDirectoryURL()を上書きするとよいらしい。
https://developer.apple.com/documentation/coredata/nspersistentcontainer/1640597-defaultdirectoryurl
他のやり方でも出来たが、たぶんこれが正着かと
class MyPersistentContainer: NSPersistentContainer {
override class func defaultDirectoryURL() -> URL {
return FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.XXXXXXX")!
}
}