在 Core Data 中存储照片和视频?

2023-11-26

我正在开发一个应用程序,可以让用户录制视频和照片。现在我想知道存储它们的最佳方式是什么?

第一个想法当然是将其保存在用户的照片库中,就像他从相机应用程序记录照片一样,并使用对文件的引用。现在存在的问题是用户可以从“照片”应用程序访问和删除文件,而我的应用程序可能仍然需要这些文件。我不认为我可以阻止用户删除照片,但是我如何处理我的应用程序将遇到的不一致问题?
另一种方法是自己管理存储。我的应用程序已经使用核心数据,因此我可以使用NSValueTransformer to an NSData对象并将其作为 BLOB 存储在 Core Data 中。然后还有一些关于性能的问题。我知道基于 SQLite 的 Core Data 可以完美处理几 GB 大小的数据库,但加载大数据对象无论如何都需要一些时间。明显的优点是用户不会让我的应用程序不一致,但是性能损失可以接受吗?最重要的是:如果我使用UIImagePickerController要捕获照片和视频,无论如何它都会将其保存在库中。要将其保存在核心数据中,我必须从那里拍摄照片,将其转换为NSData对象,保存它并再次从库中删除它。这对我来说似乎不是正确的方法。另外,UIKit 为我提供了一个函数来获取NSData照片中的对象通过UIImageJPEGRepresentation(),但是好像没有这样的转换视频的功能。

总而言之,由于所有这些未解答的问题,我想使用第一种方法。但不一致的问题让我困惑。处理它的最佳做法是什么?


为了照片:

UIImagePickerController 将在内存中返回一个 UIImage,因此您无需执行任何操作,无需将其从用户的照片库中取出并将其保存在核心数据中...

对于视频: 您可以使用以下方式取出数据NSData *data = [NSData dataWithContentsOfFile:] or [NSData dataWithContentsOfUrl:]获取视频的 NSData 对象。轻松获取videoUrl

所以,我只是先纠正你的一些错误假设。

您不需要将其直接保存到 CoreData。您可以将其保存到应用程序的文档文件夹中,然后用户将无法删除它。此外,保存到应用程序的文档文件夹并仅保存 CoreData 的链接也将使您免于处理大数据对象。

问题可能是您需要处理文件存储。

我认为这里没有最佳实践。

保存在用户的照片库中将帮助用户更轻松地查看他们的照片和视频,而无需访问您的应用程序

保存在 CoreData 中可能对您来说更容易,有时可能会更快

保存到文件存储中可能会帮助您在加载视频时避免处理一些二进制问题,因为 Apple MPMoviePlayerController 可能会帮助您

对于我来说,因为我不使用太多 SQLite 和 Core Data,所以我选择存储到文件系统中

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Core Data 中存储照片和视频? 的相关文章

  • iPhone 和 iPad 滚动结束

    我正在制作一些无限滚动的 jQuery 跨浏览器画廊 我工作得很好 但在 iPhone 上 我想也在 iPad 上 而不是相等的值 我有一些不成比例的值不匹配 window scrollTop document height window
  • UIView 周围的虚线边框

    如何在周围添加虚线边框UIView 像这样的东西 如果您喜欢子层 还有另一种方法 在您的自定义视图的 init 中 输入以下内容 border 是 ivar border CAShapeLayer layer border strokeCo
  • UIImageWriteToSavedPhotosAlbum 选择器语法问题

    努力让 UIImageWriteToSavedPhotosAlbum 快速工作https developer apple com library ios documentation UIKit Reference UIKitFunction
  • 如何使用固定宽度和自动布局正确缩放图像?

    我有一个动态 UIImage 和一个固定宽度为 280 0px 的 UIImageView 并且我正在使用自动布局 在 UIImage 视图上 我设置了宽度和高度约束 并降低了高度约束的优先级 我选择了 aspect fit 并将内容拥抱和
  • iOS 开发:如何强制 UIWebView 加载 Facebook 的非移动版本?

    我正在深入研究 iOS 开发 当我尝试在 UIWebView 中加载特定的 Facebook 粉丝页面时 它会加载该网站的移动版本 该版本仅加载粉丝页面的墙 而不是我需要加载的特定选项卡 在我的应用程序的 iPad 版本中 UIWebVie
  • 如何从地址簿中获取一个人的电话号码?

    我想做的就是让用户从地址簿中选择一个号码 我在这个问题中找到了代码 如何从地址簿联系人获取电话号码 iphone sdk https stackoverflow com questions 286207 how to get a phone
  • 在 iOS 上创建 Excel XLS 文件

    我正在尝试创建 Excel 格式的报告 准备通过电子邮件发送 到目前为止 我发现最好 最简单的方法是创建一个 xml 文档 如下所示 并将其另存为 xls
  • 在对象的 NSArray 中搜索与任何属性匹配的字符串

    我有一个 NSArray 对象 这些对象有 10 个属性 我想对这些对象进行文本搜索 我知道如何一次搜索 1 个房产 但有没有一种简单的方法可以一次搜索所有房产 以下是我的对象具有的属性列表 property nonatomic retai
  • +entityForName: nil 不是搜索实体名称“Account”的合法 NSManagedObjectContext 参数

    我尝试了很多选择 但找不到解决这个问题的方法 我创建了一个核心数据文件并将实体命名为帐户 创建了一个名为用户名的字符串属性 然后将实体的类编辑为NSManagedObject 不确定这是否正确 现在 以下代码位于我的 LoginViewCo
  • 核心数据迁移失败,并显示“找不到源存储的模型”,但存在源的 ManagedObjectModel

    我有一个使用 core data 的可可应用程序 它现在是其托管对象模型的第四个版本 我的托管对象模型包含抽象实体 但到目前为止 我已成功通过创建适当的映射模型并使用 addPersistentStoreWithType configura
  • 每次打开应用程序时运行动画

    我在 viewDidLoad 中有一个动画 该动画在应用程序第一次启动时运行 如果退出应用程序 然后再次启动它 动画将不会播放 我该如何让动画在每次打开应用程序时播放 谢谢你的帮助 在 iOS 4 中 按主页按钮不会终止应用程序 而是将其挂
  • Objective-C 中的属性和实例变量

    我对 Objective C 中的属性和实例变量感到相当困惑 我正在阅读 Aaron Hillegass 的 Mac OS X 的 Cocoa 编程 一切都很合乎逻辑 你可以像这样声明一个类 class Something interfac
  • 核心蓝牙和后台:检测设备并触发操作,即使在后台模式几天后?

    我编写了一个应用程序 需要在某个低功耗蓝牙设备进入范围内时收到通知 如果 BLE 设备被注意到 我的应用程序只会存储一个时间戳 正如 WWDC 2012 核心蓝牙视频中所述 使用核心蓝牙时 应用程序有两种在后台模式下运行的可能性 活动背景
  • 通过 IOS Google Drive SDK 列出 Google Drive 的所有文件夹

    实际上我将 google drive sdk 与我的 ios 应用程序集成了 我可以通过适用于 iOS 的 google drive sdk 在 Google Drive 上上传指定文件 此外 我想提供一个功能 用于从可用文件夹中选择一个文
  • iTunes Lookup API,获取iPhone 5应用程序截图

    I use iTunes API 查找通过 App ID 获取应用数据 即使应用程序是为iPhone5 在 JSON 中我得到3 5 inch屏幕截图 下截图网址 array 有什么办法可以得到4 inch 截图 可以使用非官方的 iTun
  • 如何重置(即取消缩放)UIScrollView?

    我有一个 UIScrollView 其中包含图像和分段控件 该控件允许用户在 ScrollView 内切换图像 如果我只是将图像交换到 UIImageView 内部 它将以放大状态显示新图像 如何将 UIScrollView 重置回未放大状
  • 保留rootViewController?

    我想知道是否有人可以帮助我解决下面代码中的内存管理问题 我对 rootController 特别感兴趣 当我执行 initWithRootViewController 时它是否会被保留 或者它是否 这是我的猜测 通过窗口 addSubVie
  • 有什么方法可以限制核心数据中的重复条目吗?

    我一直在尝试在核心数据中添加对象 所以 我希望它不应该允许核心数据存储中出现重复的条目 怎么做 这是我与保存数据相关的代码 IBAction save id sender if name text isEqualToString addre
  • 无法使用 SLComposeViewController 将图像发布到 Facebook?

    我想将图像发布到 Facebook 和 Twitter 我对 twitter 很满意 但对使用 SLComposeViewController 类的 facebook 不太满意 无需添加图像 我就可以将文本和网址发布到 Facebook 中
  • cellForRowAtIndexPath:未调用

    我的应用程序有两种状态 已登录和未登录 并且我有以下架构 大大简化 ViewController A 包含一个搜索框和一个表视图 ViewController B 用于登录应用程序 流程如下 用户未登录 A 被压入堆栈 在viewWillA

随机推荐

  • ASP.NET MVC 2 - HTML.EditorFor() 和自定义编辑器模板

    随着 MVC 2 添加 HtmlHelper EditorFor 不可能为给定的 Model 对象创建强类型的 Display 和 Editor 模板 在摆弄它之后 我有点困惑如何将额外的 Model 数据传递到编辑器而不丢失编辑器控件的强
  • HTML5 数据列表值与内部文本

    我遇到了 Chrome 和 Firefox 对 HTML5 datalist 元素的处理之间出现的问题 我可能滥用了它 Firefox 正在按照我期望的方式处理它 但 Chrome 却不是 我还没有在 Opera 上尝试过 这是针对内部页面
  • 使用 FILTER_VALIDATE_REGEXP 的 filter_var

    我正在练习我的 PHP 初学者技能 想知道为什么这个脚本总是返回 FALSE 我究竟做错了什么 namefields a zA Z s value john if filter var value FILTER VALIDATE REGEX
  • 打印n层调用堆栈?

    在 Visual Studio 中使用 C 我想知道是否有一个 API 可以为我打印调用堆栈 最好 我想打印 5 层深度的调用堆栈 Windows 是否提供了一个简单的 API 来允许我执行此操作 看起来 Microsoft 的 DbgHe
  • Xcode 7:链接器命令再次失败,退出代码为 1(使用 -v 查看调用)

    我在 Xcode 7 的 iOS 模拟器上测试我的应用程序 但当我尝试在我的 iOS 设备 带有 iOS 9 的 iPhone 5S 中测试时 我今天 09 16 2015 更新了 xcode 7 和 iOS9 在此之前使用 iOS 8 4
  • 如何从主机外部(同一网络)连接到 docker 容器 [OSX 10.11]

    设置 计算机 A 这是 Docker 机器 默认 运行的地方 虚拟盒子 default 正在运行一个名为 Odoo 的容器 默认 是使用创建的Docker的安装过程 奥杜 是 创建使用Odoo的安装过程 计算机 B 这是同一局域网 LAN
  • 修改 CDO.Message 对象中附件的内容类型

    当我尝试使用 VBScript 将 MHTML 文件作为电子邮件附件添加到电子邮件中时 ContentMediaType被错误地设置为 message rfc822 RFC 822 据我了解 根据 Microsoft 的说法这是正确的 但根
  • 如何显示 NSDocument 目录中的所有图像

    首先 我从照片库中选择图像到 ALAsset 库 然后将图像存储在 ALAsset 库路径的文档目录中 我正在使用此代码将图像存储在 ALAsset 库的文档目录中 它工作完美 现在我想在表视图中显示存储在文档目录中的所有图像 我该怎么做
  • Python 从 tar.gz 导入库?

    我正在开发一个没有 root 访问权限的盒子 但是 有一个文件夹 share 可供每个人读取和写入 我想找到一种方法来放置 python 库 以便每个人都可以访问和使用它们 我发现我可以将 Egg 文件放在 share pythonLib
  • Swift 中哪些值类型支持写时复制?

    我读到了关于 Swift 中数组的写时复制实现here 与标准库中的所有可变大小集合一样 数组使用写时复制优化 阵列的多个副本共享同一存储 直到您修改其中一个副本 当发生这种情况时 被修改的阵列将用其自身唯一拥有的副本替换其存储 然后就地修
  • Android 中的 Intent 与 Content Provider

    我是android应用程序开发的新手 在研究基本的android组件时 我对意图和内容提供者感到困惑 因为两者都被用来将数据从一个应用程序 组件发送到另一个应用程序 组件 如果有意图 我们可以使用捆绑或附加功能发送数据 那么为什么我们要使用
  • 10 月 15 日 Windows 更新后 MVC 应用程序中断

    今天早上我醒来发现我的服务器上的 MVC 4 Web 应用程序已损坏 错误信息是 An exception of type System IO FileNotFoundException occurred in mscorlib dll b
  • 错误:mime-types-data 需要 Ruby 版本 >= 2.0

    我最近在 vmware fusion 中安装了干净的 ubuntu 14 04 虚拟机并更新了它 我正在尝试通过安装 mime tyes data sudo gem install mime types data v 3 2015 1120
  • 带 H:MM:SS 的精密计时器

    如何用 H MM SS 显示天文计时器 我读到默认显示 MM SS 和 H MM SS 我只找到了 MM SS 这是我的 MM SS 代码 带有开始和停止按钮 public class MainActivity extends AppCom
  • Docker-compose:应用程序容器无法连接到 Postgres

    使用 docker compose 我尝试从以下位置查看 Flask 应用程序manage py runserver与 postgres 图像连接 但出现以下错误 sqlalchemy exc OperationalError psycop
  • UserHostAddress 给出错误的 IP

    我收集了用户访问我的网站的 IP 地址的统计数据 我注意到只有两个 IP 地址 172 16 16 1 和 172 16 16 248 我用来确定 IP 地址的属性是 Request UserHostAddress IP地址信息丢失可能是什
  • 如何从 Vue.js 数组中删除项目

    我是 vue js 2 的新手 目前正在开发一个简单的事件应用程序 我已成功添加事件 但现在我想通过单击按钮来删除事件 HTML div class list group div class list group item h4 class
  • Python:无法在网页中使用selenium下载

    我的目的是从下载一个 zip 文件这是这个网页中的一个链接https www shareinvestor com prices price download html type price download all stocks bursa
  • QT4拖动窗口没有标题栏

    我正在开发的应用程序有一个自定义 UI 需要我从主窗口中删除标题栏 不幸的是 我不知道如何制作它 以便我可以在屏幕上移动应用程序 我删除标题栏的代码如下 MainWindow MainWindow QWidget parent QMainW
  • 在 Core Data 中存储照片和视频?

    我正在开发一个应用程序 可以让用户录制视频和照片 现在我想知道存储它们的最佳方式是什么 第一个想法当然是将其保存在用户的照片库中 就像他从相机应用程序记录照片一样 并使用对文件的引用 现在存在的问题是用户可以从 照片 应用程序访问和删除文件