gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 03:58:32 24 4
gpt4 key购买 nike

我正在开发一款允许用户录制视频和照片的应用程序。现在我想知道存储它们的最佳方法是什么?

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

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

最佳答案

对于照片:

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

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

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

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

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

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

保存在用户的照片库中将有助于用户在不访问您的应用程序的情况下更轻松地查看他们的照片和视频

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

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

对于我来说,因为我用的SQLite和Core Data不多,所以我选择存入文件系统

关于iphone - 在 Core Data 中存储照片和视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4545527/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com