我在一个现有的iOS应用程序中制作了一个WATCHAPP
我已经成功地将数据从i OS传递到WatchOS,并通过委托方法接收WatchOS中的数据,如下面的代码所示。
我的问题是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))
    }

最佳答案

从watchOS 2开始,用户默认值就可用了(用于存储轻量级数据,如设置)。核心数据也可用。

关于swift - 数据持久性WatchOS 4.0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56891829/

10-11 19:47