我正在尝试创建一个具有今日小部件扩展程序的应用。这个应用程序应该只是访问一个充满图片的文件夹,加载它们并将它们绘制到屏幕上。每小时一张照片。小部件应该做同样的,小部件明智。 在主应用程序中加载图像并将其绘制到屏幕时,可以完美地执行此操作:
NSString *tildePath = @"~/Documents/Adrian/Art/desertMovie.jpg";
NSString *path = [tildePath stringByExpandingTildeInPath];
_image = [[NSImage alloc] initWithContentsOfFile:path];
扩展完全搞砸了道路。它使用与主应用程序相同的代码,但完全模糊了路径。
自:
~/Documents/Adrian/Art/desertMovie.jpg
为:
/Users/Adrian/Library/Containers/ac.at.hulala.AK.ImageViewer2.ImageViewerWidget/Data/Documents/Adrian/Art/desertMovie.jpg
如果我使用没有“〜”的路径,路径保持不变,但图像仍然无法加载。
有人可以告诉我我必须做什么才能访问主应用程序所使用的相同文件夹吗?
编辑: 存档应用程序并将其导出似乎可以解决该问题。但是我仍然想知道如何在开发过程中使其工作。
EDIT2:
这太奇怪了!使用Todays Extension Widget时,像@"~/Pictures
这样的路径会导致/Users/Me/Libraries/Containers/ac.at.ImageViewerWidget/Data/
像f ***一样,为什么!?
当我强制它使用路径@"/Users/Me/Documents/Pictures
并运行它时,内存使用量稳步增加,直到达到极限并且我的系统进入地狱。我真的不明白。我猜小部件没有找到任何文件,所以它试图加载整个ssd。我猜。我真的不知道这里的问题是什么。
有人能引导我进入光明吗?
答案 0 :(得分:0)
不是说xcode会告诉你应用程序是否有问题。它只会分配你的整个内存并烧掉你的cpu,
,直到
您意识到问题是由于缺少文件夹访问权限造成的。 Geezuz! 如果要访问某些内容,请为您的应用程序添加文件夹访问权限!