問題タブ [watchkit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - XCode で Watch アプリを実行する方法
Apple のガイドラインに従ってウォッチ アプリを作成しましたが、シミュレーターで実行する方法がわかりません。
Watch App スキームを選択して実行すると、iPhone シミュレーターが表示され、WatchKit 拡張機能が実行されていることがわかります。
しかし、シミュレーターの画面では何も起こりません。
ios - ストーリーボードなしで (完全にコードで) WatchKit アプリを作成できますか?
私のチームは現在、ストーリーボードをまったく使用しない iOS アプリケーションに取り組んでいます。代わりにコードで UI を作成します。したがって、一貫性を保つために、Watch App ターゲットを完全にコードで作成できれば素晴らしいことです。
ただし、「WatchKit の概要」ビデオとWatchKit フレームワーク リファレンスの両方
で、Watch アプリ ターゲットのストーリーボードが必要であると述べられています。さらに、WKInterfaceObject.h
メソッドinit
は使用不可としてマークされています。
では、ストーリーボードを使わずに Watch アプリを作成することは本当に不可能なのでしょうか? もしそうなら、この決定の背後にある理由は何ですか? つまり、iPhone / iPad アプリは完全にコードで作成できるのに、Watch ではなぜ違うのでしょうか?
ios - ホスト アプリと拡張機能の両方で使用される共有アプリ コンテナー内のコア データ ストア内の一意のエントリを保証するにはどうすればよいですか?
私の質問を効果的にするために、まず私が直面している正確なシナリオを考えてみましょう:
一般的な設定
- ホスト iOS 8 アプリ。
- ホスト アプリにバンドルされている 1 つ以上の iOS 8 拡張機能 (WatchKit、Share など)。
- ホスト アプリとすべての拡張機能は、共有アプリ グループ コンテナー内の同じ Core Data SQLite ストアを共有します。
- 各アプリ/拡張機能には、独自の NSPersistentStoreCoordinator と NSManagedObjectContext があります。
- 各永続ストア コーディネーターは、他のすべての永続ストアと同じ SQLite リソースをグループ コンテナー内で共有する永続ストアを使用します。
- アプリとすべての拡張機能は、共通のコードベースを使用して、インターネット上のリモート API リソースからコンテンツを同期します。
問題につながる一連のイベント
ユーザーがホスト アプリを起動します。リモート API リソースからのデータのフェッチを開始します。コア データ モデル オブジェクトは、API 応答に基づいて作成され、ホスト アプリのマネージド オブジェクト コンテキストに「アップサート」されます。各 API エンティティには、リモート API バックエンドでそれを識別する uniqueID があります。「アップサート」とは、API エンティティごとに、特定の uniqueID の既存のエントリが見つからない場合にのみ、ホスト アプリが Core Data に新しいエントリを作成することを意味します。
一方、ユーザーはホスト アプリの拡張機能の 1 つも起動します。これも、同じリモート API から何らかのフェッチを実行します。また、API 応答を解析するときに「アップサート」を実行しようとします。
問題:ホスト アプリと拡張機能の両方が同じ API エンティティのコア データ エントリを同時にアップサートしようとするとどうなりますか? これがどのように発生するかを確認するために、アップサートの一連のイベントを見てみましょう。
コア データ アップサート シーケンス:
- API 解析コードは、特定の API エンティティの uniqueID を解析します。
uniqueID
パーサーは、解析された uniqueID と等しい述語に一致するすべてのエントリに対してコア データ フェッチを実行します。- 既存のエントリが見つからない場合、パーサーはこの API エンティティの新しい Core Data エントリを挿入し、その
uniqueID
属性を解析済みの uniqueID に設定します。 - パーサーは管理オブジェクト コンテキストを保存し、新しいエントリ データを SQLite バッキング ストアにプッシュします。
問題の詳細
ホスト アプリと拡張機能が、同じ API エンティティの API 応答を同時に個別に解析しているとします。ホスト アプリと拡張機能の両方がステップ 4 を完了する前にステップ 3 に到達した場合、両方とも同じ uniqueID の新しい Core Data エントリを挿入しようとします。ステップ 4 に到達save:
し、それぞれの管理対象オブジェクト コンテキストを呼び出すと、Core Data は問題なく重複したエントリを作成します。
私の知る限り、Core Data には属性を一意としてマークする方法がありません。SQLite INSERT OR IGNORE
+UPDATE
コンボに相当する Core Data が必要です。. または、永続ストアの SQLite バッキング ストアを「ロック」する方法が必要です。これは、トラブルのレシピのように聞こえます。
iOS 8 拡張機能によって導入された、このかなり新しい問題に対する既知のアプローチはありますか?
ios - WatchKit のモーダル ビューからデータを戻す
インターフェイスコントローラーをモーダルに提示またはプッシュする場合、context
次のようにパラメーターを指定して、新しいコントローラーにデータを渡すことができます。
私の質問は、どうすれば逆にできるでしょうか?
ユーザーがリストからアイテムを選択できるようにコントローラーをモーダルに提示し、メイン コントローラーに戻るとします。選択されたアイテムを取得するにはどうすればよいでしょうか?
ios - Apple Watch アプリにデータを渡す
アプリから Apple Watch アプリにデータを渡そうとしています。基本的に、today ウィジェットの作成に使用したのと同じ方法を使用しているため、NSUserDefaults を介してデータを渡しています。
問題は、アプリを実行すると、期待どおりにデータが Watch アプリのラベルを更新しないことです。
これが私が持っているものです...
このコードを に入れてみましwillActivate()
たが、違いはないようです。
誰が私が間違っているのか知っていますか?
ios - watchkit 、iOS が時計と iPhone の間でデータを送信
時計にボタンを1つ作成し、時計をタップしながらiosアプリへの1つのプロセスを開始したいと考えています。2 つのデバイス間でデータを送信するにはどうすればよいですか
プラス
私のボタン時計では、それは動作しません
objective-c - WatchKit アプリの実行方法
新しいプロジェクトからウォッチキット アプリを実行できません。Apple のサンプル プロジェクトを実行すると、正常に動作します。ウォッチキットのターゲットを追加して、既存のプロジェクトにウォッチキットを追加するとします。次に実行すると、ストーリーボードに青い背景を持つメインに設定されたインターフェースコントローラーがありますが、時間とともに黒い画面が表示されます。このコード行が呼び出されます。
iPhone 用のメイン アプリ (iPhone アプリ) がシミュレーターで実行されません。
これは基本的に私が見ているものです。
iphone - Apple Watch のレイアウト
グループを挿入し、その中に 4 つのボタンを追加した Apple Watch 用の電卓を作成していますが、これらの 4 つのボタンを両方の Apple Watch 画面で調整するオプションが見つかりません。
アップルウォッチ 38mm
アップルウォッチ 42mm
グループのプロパティ
ボタンのプロパティ