Ios8 应用程序扩展如何访问包含的应用程序图像/资产/资源数据

Ios8 应用程序扩展如何访问包含的应用程序图像/资产/资源数据,ios8,ios-app-extension,Ios8,Ios App Extension,我用自己的应用程序实现了文档提供商应用程序扩展功能 ios应用程序。问题是应用程序扩展无法访问 包含应用程序图像/资产或包含应用程序资源数据。 有人知道如何实现它吗 扩展在您的Xcode项目中有自己的目标。为了访问扩展中的资源,您还需要将它们添加到该目标(在文件检查器中,还需要在目标成员资格部分检查扩展目标)。请注意,这些资源也会被复制到扩展包中,这会增加应用程序的总体大小 旁注:在我的扩展中,我没有将默认的图像资源目录(Images.xcsets)添加到扩展中,但仍然能够访问包含的图像。也许这

我用自己的应用程序实现了文档提供商应用程序扩展功能 ios应用程序。问题是应用程序扩展无法访问 包含应用程序图像/资产或包含应用程序资源数据。 有人知道如何实现它吗


扩展在您的Xcode项目中有自己的目标。为了访问扩展中的资源,您还需要将它们添加到该目标(在
文件检查器
中,还需要在
目标成员资格
部分检查扩展目标)。请注意,这些资源也会被复制到扩展包中,这会增加应用程序的总体大小

旁注:在我的扩展中,我没有将默认的图像资源目录(
Images.xcsets
)添加到扩展中,但仍然能够访问包含的图像。也许这是个例外。

更新 如果您支持iOS 8及以上版本,您可以创建一个框架,在应用程序及其扩展之间共享,并在其中嵌入资源、字符串等。确保使用
[UIImage imageNamed:inBundle:compatibleWithTraitCollection:]
NSLocalizedStringFromTableInBundle
方法,传入作为框架的捆绑包

先前的答复 考虑到扩展名(希望总是)在主应用程序的子文件夹中,位于/Plugins/PluginName,并且与主应用程序一样具有访问文件的权限,您可以执行以下操作(我在商店中的一些应用程序中也执行此操作):


这将为您节省大量空间,特别是当您的扩展使用大量图像时。

我只是这样做的。是的,应用程序的大小正在增加。如果我使用共享嵌入式框架(包含图像资产和通用代码),那么它将正常工作?。它不会增加应用程序的大小。听起来不错。但请记住,嵌入式框架仅在iOS 8.0中受支持。哦,不。。。那么ios7怎么了!!!?。实际上我想同时支持ios7和ios8。还有别的想法吗?这和我的问题是一样的。因为我没有太多的资源,所以我现在坚持复制它们。我猜你的扩展没有使用应用程序使用的所有图像。因此,您可以通过将它们提取到另一个资产目录中来减小大小,并且只将此目录添加到您的扩展中。当然,现在我将按照您的建议复制操作扩展所需的资产。谢谢你的建议:-)。但我如何在包含应用程序和扩展应用程序之间共享公共代码路径。有什么好办法可以实现吗?。
// image
UIImage* image = [UIImage imageNamed:@"../../image_name.png"]

// data
NSString* path = [NSHomeDirectory() stringByAppendingPathComponent:@"../../file.json"];
NSData* data = [NSData dataWithContentsOfFile:path];