- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
基本问题:如果您有一个 Assets URL 并希望检索该 Assets 的图像,您如何实际验证该 Assets 是否确实存在?请参阅下面我的完整解释以了解详细信息我是说。
我有一个正在开发的应用程序,允许用户将图像分组为“包”以进行进一步处理。这些图像可以来自 iTunes 共享、设备的相机(如果已连接)或设备的照片库。此外,用户可以以一些基本方式编辑图像。 “捆绑”可以长期存在;它们在应用程序停止和启动时被序列化和反序列化,因此应用程序的状态在运行之间保持不变。
我的原始设计将图像保存到应用程序的沙箱中。如果执行任何编辑,图像将被简单地重写到它的本地文件中。但是,如果一个包中包含大量图像,这可能会导致不必要的图像内容重复,从而导致“文件系统”的使用不尽如人意。
我的重新设计现在有了它,如果图像来自 Assets 库,我只需存储 Assets 的 URL,并在需要实际显示图像或其内容时检索它。当用户编辑图像时,它会被写入本地沙箱,就像我最初的设计一样。我的应用程序跟踪图像是来自本地文件系统还是 Assets 库。
当我的应用程序未激活时,我的问题就出现了。用户完全可以进入照片应用程序并随意删除图像——包括我的应用程序存储了 URL 指针的图像。
我做了一个“如果呢?”测试一下,看看如果用户做这样的事情,我的应用程序会发生什么。我看到的情况有点出乎意料。我编写了一个处理包列表的处理程序,使用以下代码验证所有具有 Assets URL 的图像:
[assetLibrary
assetForURL:url
resultBlock:^(ALAsset *asset) {
_image = [UIImage imageWithCGImage:[[asset defaultRepresentation] fullResolutionImage]];
// ... everything works!
}
failureBlock:^(NSError *error) {
NSLog(@"Asset verify failed");
if (_image != nil) {
// I already have a reference to the UIImage... write it locally
} else {
// Image is nil and we have an empty image.
}
}];
在我的测试中,我从未到达失败 block 。 Apple 的文档说“如果用户拒绝访问应用程序,或者如果没有应用程序被允许访问数据,则会调用失败 block 。”它没有说明当 URL 不访问时会发生什么存在。事实上,我的测试显示某些东西正在写入一条 NSLog() 消息,“无法找到具有 UUID XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX 的 Assets ”(XXX 被原始 URL 中的 UUID 替换)。不过,这还不够糟糕。我仍然可以在屏幕上的 View Controller 上看到 UIImageView 中的图像,并且当我将 View Controller 弹出到父级时,我得到了系统重置。
那么,我的问题是,有什么方法可以判断 Assets URL 是否确实存在?我不介意是否必须删除图像(毕竟,用户是删除图像的人!)。我不喜欢有一些已知的行为路径会持续导致设备重启的想法;我无法向 App Store 提交具有此行为的应用程序。
有什么建议吗?在等待答案的同时,我仍将对一些想法进行自己的测试,但我可以使用人们就此给我的任何建议。
谢谢!
最佳答案
我遇到了类似的问题 - 在 resultBlocked 中,我检查了 Assets 参数是否为 nil - 如果它为 nil,则 Assets 未找到。
关于ios - 您如何判断 Assets URL 是否实际指向现有 Assets ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9548909/
我在我的应用程序中使用rails 4 和 ruby 1.9.3 以及fancybox2-rails gem,但是 Assets 管道存在一个普遍问题。如果我运行 rake task 进行预编译,那
我把我所有的 Assets 都放在我的包里例如myBundle/Resources/public/css/ 然后像这样加载它们: {% block stylesheets %} {{ parent()
我正在创建RoR-6应用程序,并从此行的application.html.erb文件中引发以下错误: javascript_include_tag 'application', 'data-turbo
我正在对 Play Subproject 功能进行更多扩展测试,如下所述:http://www.playframework.com/documentation/2.0/SBTSubProjects .
我是 symfony 2 和 Assetic 的新手。我想在 CSS 中使用 assetic 和 Sass。我使用自定义字体。我在资源下的包中创建文件夹“assets/css”,里面有 _base.s
这是我的目录结构(这只是一个测试项目): stan@mypc:/generate_assets$ sudo tree -L 3 -p . ├── [drwxr-xr-x] assets │ └─
我使用 node.js connect/express。 有人知道支持 TypeScript 源代码即时编译和缩小的 Assets 管理器吗? 知道如何以编程方式调用编译器吗? 我一直在使用 conn
因此,我们在 Assets 管道摘要方面遇到了一个小问题,因为我们有许多 HTML 模板作为 Assets (对于 AngularJS),并且我们使用 asset_path 在 Javascript
我想从iPad的照片库中获取图像URL。 当我尝试从Image Piicker的信息中获取 UIImagePickerControllerReferenceURL 时 我将URL设为: assets
我正在使用带有Assetic的Symfony 2.1.10版,并且在上次 Composer 更新之后,当我尝试运行php app/console assetic:dump时出现以下错误 Dumping
我的 Assets 管道有问题,我已经有一个名为 Assets 的资源/ Controller 。所以我已将 assets.prefix 选项更改为“/externals”。 config.asset
更新到 Expo sdk 34 后,出现此错误:TypeError:Asset.fromModule 不是函数。 (在“Asset.fromModule(image)”中,“Asset.fromMod
将 Play 框架项目从 2.2.4 迁移到 2.3.8 后遇到问题: 这是运行命令“activatorcompile”的错误输出: [error] ...\workspace\testproject
我在将 Google Analytics 添加到我的 Rails 4 应用程序时遇到了一些困难(参见 this post)。 我通过在 /public/assets/google-analytics.
我正在使用 Symfony2 和 Assetic。最近我一直在做很多 CSS 工作,所以在某个时候我需要命令 $ php app/console assetic:dump --env=prod --n
我正在 Android 开发中迈出第一步,并遇到了 Assets 一词。 据我了解, Assets 只是一个未被解析或引用为资源的文件。 这个词有更准确的定义吗?我应该在哪些情况下在我的应用程序中使用
我添加了 danial-farid--angular-file-upload通过 Rails Assets 将库添加到我的 Rails 4 应用程序。主库加载正常,但 sprockets 找不到它包含
这是我的代码,尽管编码非常粗糙: public void loadStack(AssetManager manager, String path) { String[] lis
我正在使用 Assets 管理我的 Symfony 2 框架中的 CSS 文件。它在生产模式下运行良好。 我的问题是在 Debug模式下,assetic 不断将我的文件合并为一个输出文件。这使得跟踪特
我想以编程方式从重复的相册中删除 Assets (照片不是)。我可以使用照片框架删除相册 我想知道如何从相册中删除 Assets 而不从照片应用中完全删除它。我想在多个地方使用它,例如将 Assets
我是一名优秀的程序员,十分优秀!