相关疑难解决方法(0)

将数据传递到Apple Watch应用程序

我正在尝试将数据从我的应用程序传递到Apple Watch应用程序中.基本上,我使用的方法与我用于创建今天小部件的方法相同,因此我通过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)")
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试将此代码放入其中willActivate(),但这似乎没有任何区别.

谁知道我哪里错了?

nsuserdefaults ios swift apple-watch watchkit

28
推荐指数
4
解决办法
2万
查看次数

WatchKit SDK无法从NSUserDefaults检索数据

我想为Apple手表制作一个测试应用程序,您可以在手机上设置一些String,然后它将显示在Apple Watch上.我决定使用NSUserDefaults类来存储这些数据.

在我的iPhone视图控制器中,我有一个方法,它将输入和存储带入本地存储:

- (IBAction)saveInfo:(id)sender {

    NSString *userInput = [myTextField text];

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    [defaults setObject:userInput forKey:@"savedUserInput"];

    [defaults synchronize];

    self.myLabel.text = [defaults stringForKey:@"savedUserInput"];
}
Run Code Online (Sandbox Code Playgroud)

在我的监视接口控制器中,我有一个检索数据并显示它的方法:

- (IBAction)showText2 {

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    [defaults synchronize];

    self.myLabel2.text = [defaults stringForKey:@"savedUserInput"];
}
Run Code Online (Sandbox Code Playgroud)

除了某些原因,我试图检索的数据显示为null,标签没有更新.

xcode objective-c ios xcode6 watchkit

25
推荐指数
2
解决办法
1万
查看次数

设置包不能在watchOS 2上运行

这在watchOS 1上不是问题,但现在在watchOS 2上我无法读取手表扩展上的值.

根据Apple文档,这是可能的.根据这个帖子的一些人的说法,这是可能的.根据这个线程上的Apple员工的说法,这是可能的.

据我所知,我正确地设置了所有内容:

  • 我在iOS应用上启用了App Groups,并使用相同的标识符来观看扩展.
  • 我将Settings-Watch.bundle添加到iOS应用程序中,并ApplicationGroupContainerIdentifier为plist 添加了相同的标识符

当我NSUserDefaults使用标识符作为套件名称初始化对象时,我无法读取监视扩展名上的值.我可以在iOS应用程序上阅读它们.这发生在模拟器和真实设备中.

请不要发布有关如何使用Watch Connectivity执行此操作的答案.只有在没有Watch Connectivity的watchOS 2上的共享应用程序组才能实现这一点,人们可以做到这一点,而这里直接来自文档:

在watchOS 2中,您的WatchKit扩展可能会读取首选项的值,但您无法编写新值.watchOS 2中的首选项从iOS转发到Apple Watch,但您所做的任何修改都不会发送回iOS.

nsuserdefaults ios ios-app-group watchkit

8
推荐指数
1
解决办法
1278
查看次数

观看OS 2 - 如何在Watch上存储完全原生应用程序的数据?

我需要在WatchKit Extension上存储大约5个变量 - 仅限Watch.该应用程序将完全原生,不会将任何信息传递给iPhone.如果手表重新启动,我需要数据保持不变.应用程序当前在重新启动时重置为默认变量状态.我不知道该用什么.我在网上找到了关于使用手表钥匙串存储键值数据对(用户名/密码)的信息,但我认为这不是我应该在这里使用的.感谢一些帮助.

ios apple-watch watchkit

7
推荐指数
1
解决办法
3000
查看次数

iOS/watchos2 - 为什么不session:didReceiveApplicationContext:fire?

我已经阅读了下面的q/a,这很棒.这正是我在测试项目中所做的,它运行正常.

我现在已经创建了我的真实项目,但是在Watch扩展中,session: didReceiveApplicationContext:不会触发.

这是我的发送代码:

-(void)sendPlistToWatch:(NSMutableDictionary *)dictionary {
    NSLog(@"%s", __FUNCTION__);
    if ([WCSession defaultSession]) {
        NSDictionary *applicationDict = @{@"Favorites.plist":dictionary};
        [[WCSession defaultSession] updateApplicationContext:applicationDict error:nil];

        NSLog(@"sent dictionary");
    } else {
        NSLog(@"not paired");
    }
}
Run Code Online (Sandbox Code Playgroud)

这是手表上的接收代码:

- (void)awakeWithContext:(id)context {
    [super awakeWithContext:context];

    if ([WCSession isSupported]) {
        [self.session activateSession];
        self.session = [WCSession defaultSession];
        self.session.delegate = self;
    }
}

- (void)willActivate {
    [super willActivate];
}

- (void)didDeactivate {
    [super didDeactivate];
}



- (void)session:(nonnull WCSession *)session didReceiveApplicationContext:(nonnull NSDictionary<NSString *,id> *)applicationContext {
    NSString *string = [applicationContext objectForKey:@"dictionary"];

    NSMutableDictionary …
Run Code Online (Sandbox Code Playgroud)

session ios watchos-2

1
推荐指数
1
解决办法
2138
查看次数