在iPhone和Watch应用中共享文档目录中的数据。

4

我如何使用App Groups共享数据,例如在文档目录中的图片?

如果这不可行,那么在Watch App和iPhone应用之间共享图片的最佳方法是什么?我可以将图像二进制数据存储在coredata中,但这不太高效。我也可以使用NSUserDefaults来完成此操作,但这也不是很高效。

2个回答

9

在您在Xcode中配置了App Group之后(请参阅有关与包含iOS应用程序共享数据的部分),您可以像这样获取共享容器/文件夹的路径:

NSURL *groupContainerURL = [[NSFileManager defaultManager]
            containerURLForSecurityApplicationGroupIdentifier:@"YourAppGroupIdentifier"];
NSString *sharedDirectory = [groupContainerURL path];

然后,要将UIImage(例如)写入该文件夹:

NSData *imageData = UIImagePNGRepresentation(image);
NSString *filePath = [sharedDirectory stringByAppendingPathComponent:@"image.png"];
[imageData writeToFile:filePath atomically:YES];

你可以在手表扩展和iOS应用程序中使用相同的逻辑来共享文件。你也可以创建自己的目录,因为没有共享容器的“标准”目录结构。

如何在watch kit扩展目标中使用应用程序组标识符?当我尝试在目标中启用此应用程序组时,我会收到错误消息,指出watchkit-extension中没有可用的app-id,如此问题所述:http://stackoverflow.com/questions/37046501/using-app-groups-for-watchkit-extension-and-container-app-an-app-id-with-ident - itinance
太棒了!它对我有效,我以为只有用户默认设置可以工作 :p,不管怎样,再次感谢 :) - Abhishek Thapliyal
嗨 @Mike,如何在扩展中使用或获取数据? - ikbal
系统已经为您创建了一个目录:系统仅会自动创建Library/Caches子目录...(请参见https://developer.apple.com/documentation/foundation/filemanager/1412643-containerurl)。 - Chris Prince

0
使用App Groups共享数据。 通过使用App Groups和NSUserDefaults,可以在iOS应用程序和WatchKit扩展之间轻松共享少量数据。为了访问其他资源,例如Core Data存储,可以使用共享容器来简化数据访问并提供最新信息,该容器在iOS应用程序和WatchKit扩展之间共享。
请查看WatchKitt App Architecture

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接