デフォルトのXCodeテンプレートを使用してWatchKitアプリケーションを作成しました。 iOSターゲット、Watchkit App Target、Watchkit App Extension Targetにアプリグループの資格を追加しました。 (これはアプリのグループ名です:group.com.lombax.fiveminutes) その後、私は、iOSのAppとWatchKit拡張の両方で共有フォルダのURLにアクセスしようとしました:containerURLForSecurityApplicationGroupIdentifier:iPhoneとウォッチシミュレータで異なる結果を表示
拡張子:
@implementation ExtensionDelegate
- (void)applicationDidFinishLaunching {
// Perform any final initialization of your application.
NSURL *test = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.com.lombax.fiveminutes"];
}
iOSのアプリケーション:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
NSURL *test = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.com.lombax.fiveminutes"];
// ...
}
しかし、test
NSURLが異なります。
iOSでは:
ファイル:///ユーザ/ロンバルド/ライブラリ/開発/ CoreSimulator /デバイス/ 38B983DB-342F-4A47-8C26-5D2C92CDB666 /データ/コンテナ/共有/ APPGROUP/8DEE182E-AFE6-47DD-BA2B-6B0520158A8B /ウォッチの
:
ファイル:///ユーザ/ロンバルド/ライブラリ/開発/ CoreSimulator /デバイス/ BF52D613-25FF-4092-A5B2-9C3F1B616160 /データ/コンテナ/共有/ APPGROUP/CECB5EFC-7FBD-4C84-A878-1314CB7CF211/
このため、iOS AppとWatchKit Extensionの間でデータを共有できません。
私はApple WatchでWatchOS 2.0を使用していないため、実際のデバイスでは試してみません。 アドバイスはありますか?
UPDATE おかげで、私はいくつかの他のテストでした:WatchOS 2インストール
- を、問題はまだ実際のデバイス上で存続します。
この私のiPhoneのための店のURLです:*
NSURL @ "ファイル:///民間の/ var /モバイル/コンテナ/共有/ APPGROUP/3D05D159-94D6-409C-9A38 -90E0830D0C3F/FiveMinutes.sqlite "
そして、これは私の腕時計のための店のURLです:*
NSURL @" ファイル:/// PRIVAT Eの/ var /モバイル/コンテナ/共有/ APPGROUP/F1E89377-F456-4FC2-BAAC-3DD705EF381A/FiveMinutes.sqlite」
2つのアプリが読み込み、へ-から二つの異なる.sqlite
ファイルを書き込みます。シミュレータ上で
- 私はハードコードのURLの1つが、iOSのシミュレータとウォッチシミュレータの両方が同じ
.sqlite
ファイルを書き込み、読み込み、コンテンツを共有することができます。
URL:ファイル:ウォッチの拡張子は、iOSのパスに書き込むことができないので、これは実際のデバイス上不可能です///民間の/ var /モバイル/コンテナ/共有/ APPGROUP/3D05D159-94D6 -409C-9A38-90E0830D0C3F/FiveMinutes.sqlite options :(null)...エラーを返しましたError Domain = NSCocoaErrorDomain Code = 512「ファイルを保存できませんでした」 UserInfo = {理由=ファイルの作成に失敗しました。コード= 2} userInfo辞書{ 理由= "ファイルを作成できませんでした、コード= 2"; }
しかし、実際にファイルを配置してアクセスしようとしましたか?神はどのようにシミュレータが動作し、どのフォルダを使用するのかを知っています。 watchOS 2.0といえばそれらは現在ネイティブアプリです。アプリを見る権利を追加するべきではありませんか? – Yaroslav
はい、ファイルを書き込もうとしましたが、別の場所に置かれました.iOSは時計ファイルにアクセスできず、watchはiOSファイルにアクセスできません。 iOSアプリ、時計アプリ、時計拡張機能にエンタイトルメントを追加しました。エンタイトルメント文字列を何か別のものに変更すると、返されるNSURLはゼロになるため、エンタイトルメントはうまく追加されたようです – LombaX