Bjö*_*lek 4 iphone photo core-data video-capture objective-c
我正在开发一个应用程序,让用户录制视频和照片.现在我想知道存储它们的最佳方法是什么?
第一个想法当然是将其保存在用户的照片库中,就好像他已经从相机应用程序中记录了照片,并使用对文件的引用.现在存在用户可以访问和删除照片应用程序中的文件的问题,我的应用程序可能仍然需要这些文件.我不认为我可以阻止用户删除照片,但我如何处理我的应用程序将遭受的不一致?
另一种方法是自己照顾存储.我的应用程序已经使用了核心数据,这样我就可以使用媒体文件转换NSValueTransformer成NSData对象并将其存储在核心数据BLOB.然后还有一些关于性能的问题.我知道基于SQLite的核心数据可以完美地处理大小为几GB的数据库,但是加载大型数据对象需要花费一些时间.显而易见的优点是用户不会使我的应用程序不一致,但性能损失是否可以接受?最重要的是:如果我用a UIImagePickerController来拍摄照片和视频,那么无论如何它都会将它保存在图书馆中.要将其保存在Core Data中,我必须从那里拍摄照片,将其转换为NSData对象,保存并再次从库中删除.这对我来说似乎不是正确的方法.此外,UIKit为我提供了NSData从照片中获取对象的功能UIImageJPEGRepresentation(),但似乎没有这样的功能来转换视频.
总而言之,由于所有未解决的问题,我想使用第一种方法.但是不一致问题困扰着我.处理它的最佳做法是什么?
对于照片:
UIImagePickerController将在内存中返回一个UIImage,因此您不必执行任何操作,不会将其从用户的照片库中删除并将其保存在核心数据中...
对于视频:您可以使用NSData *data = [NSData dataWithContentsOfFile:]或[NSData dataWithContentsOfUrl:]获取数据,以获取视频的NSData对象.您可以轻松获得videoUrl
所以,我刚刚纠正了一些错误的假设.
您无需将其直接保存到CoreData.您可以将其保存到应用程序的文档文件夹中,然后用户将无法删除它.此外,保存到应用程序的文档文件夹并仅保存到CoreData的链接也将使您的灵魂无法处理大数据对象.
问题可能是您需要处理文件存储.
我不认为这里有最好的做法.
保存在用户的照片库中可以帮助用户更轻松地查看照片和视频,而无需访问您的应用
保存在CoreData中对您来说可能更容易,并且可能在某些时候更快
保存到文件存储可能有助于您在加载视频时不处理某些二进制问题,因为Apple MPMoviePlayerController可能会帮助您
对我来说,因为我没有使用太多SQLite和Core Data,所以我选择存储到文件系统中
| 归档时间: |
|
| 查看次数: |
4671 次 |
| 最近记录: |