30

アプリから Apple Watch アプリにデータを渡そうとしています。基本的に、today ウィジェットの作成に使用したのと同じ方法を使用しているため、NSUserDefaults を介してデータを渡しています。

問題は、アプリを実行すると、期待どおりにデータが Watch アプリのラベルを更新しないことです。

これが私が持っているものです...

override init(context: AnyObject?) {
    // Initialize variables here.
    super.init(context: context)

    // Configure interface objects here.
    NSLog("%@ init", self)

    var defaults = NSUserDefaults(suiteName: "group.AffordIt")
    var totalBudgetCalculation = ""
    if (defaults!.stringForKey("totalBudgetWidget") != nil) {
            println("Worked")
        totalBudgetCalculation = defaults!.stringForKey("totalBudgetWidget")!
        initialBudgetLabel.setText("Initial: \(totalBudgetCalculation)")
    }

    var currentBudgetCalculation = ""
    if (defaults!.stringForKey("currentBudgetWidget") != nil) {
        currentBudgetCalculation = defaults!.stringForKey("currentBudgetWidget")!
        currentBudgetLabel.setText("Current: \(currentBudgetCalculation)")
    }
}

このコードを に入れてみましwillActivate()たが、違いはないようです。

誰が私が間違っているのか知っていますか?

4

5 に答える 5

25

これは OS 1 のみに適用されます。より良い答えについては、以下を参照してください。

私はあなたの方法を使用してそれを機能させました。確認できることがいくつかあると思います。

1) 値を設定した後、デフォルトを同期していますか?

defaults?.synchronize();
NSLog("%@ ", defaults?.dictionaryRepresentation())

2) アプリと拡張機能の両方でアプリ グループを有効にしましたか?

アプリ ターゲットのアプリ グループ機能 ウォッチ拡張ターゲットのアプリ グループ機能

3) NSDefaults を作成するときに、正しい名前のアプリ グループを使用していますか? たとえば、次を使用します。

NSUserDefaults(suiteName: "group.com.brindysoft.MyWatch");

すべての設定が完了したら、アプリを実行し、デフォルトで値を設定してから、デフォルトから値を読み取る一瞥ターゲットを実行すると、うまくいくようです!

ここに画像の説明を入力

  1. まだ立ち往生していますか?Apple アカウントでアプリ グループを確認する
于 2014-11-19T22:24:26.280 に答える
7

アプリと時計の間で通信するもう 1 つの方法は、ワームホール経由です。

https://github.com/mutualmobile/MMWormhole

送信:

[self.wormhole passMessageObject:@{@"titleString" : title} 
                  identifier:@"messageIdentifier"];

id messageObject = [self.wormhole messageWithIdentifier:@"messageIdentifier"];

受け取る:

[self.wormhole listenForMessageWithIdentifier:@"messageIdentifier" 
listener:^(id messageObject) {
// Do Something
}];
于 2015-01-13T20:32:08.520 に答える