Постоянные данные WatchOS 4.0 - PullRequest
0 голосов
/ 04 июля 2019

Я сделал watchApp в существующем приложении IOS я успешно передал данные из IOS в WatchOS и получил данные в watch OS через метод делегата, как вы видите в кодах ниже.

Моя проблема в том, что данные не сохраняются в WatchOS. в любое время, когда мне нужно использовать watchApp, мне сначала нужно открыть приложение IOS, а затем оно обновляет watchApp.

Я попробовал AppGroups, но похоже, что он больше не работает на watchOS 2.0+.

так как я могу сохранить данные на watchOS и обновить их только через updateApplicationContextWithApplicationContext?

    NSMutableDictionary * cardDataForWatch = [[NSMutableDictionary alloc] init];

    for (Card * card in self.cards)
    {

        NSMutableDictionary<NSString *, id> *storedData = [[NSMutableDictionary alloc] init];

        Store    * store   = [StoreHelper getStoreForCard:card];
        NSString * color   = [ColorHelper hexStringForColor:[[store getColorPalette] getHighlightColor]];
        NSString * barcode = [card barcode];

        if (color != nil)
        {
            [storedData setValue:color forKey:@"color"];
        }

        if (barcode != nil)
        {
            [storedData setValue:barcode forKey:@"barcode"];
        }

        UIImageView * imageView = [[UIImageView alloc] init];
        imageView.frame = CGRectMake(0, 0, 100, 90);

        [BarcodeRenderer renderBarcode:card to:imageView andLabel:nil];

        NSData * barcodeImage = UIImagePNGRepresentation([imageView image]);
        [storedData setValue:barcodeImage forKey:@"barcodeImage"];

        [cardDataForWatch setValue:storedData forKey:[card store]];
    }

    @try {
        [[WatchSessionManager sharedManager] updateApplicationContextWithApplicationContext:cardDataForWatch error:nil];

затем я получаю данные в watchOS через метод делегата:

func session(_ session: WCSession, didReceiveApplicationContext applicationContext: [String : Any])
    {
        print("? \(applicationContext)")
        self.delegate?.dataFromIOS(DataSource(data: applicationContext))
    }

1 Ответ

1 голос
/ 05 июля 2019

UserDefaults доступно с watchOS 2 (для хранения легких данных, таких как настройки). Основные данные также доступны.

...