如何使用核心数据在iOS swift中保存和获取VideoURL?

时间:2018-11-12 08:44:07

标签: ios iphone swift

我有一个file:///var/mobile/Containers/Data/Application/3C80B7F1-F0AA-4723-B7F5-E7AC5E71CA09/Documents/2018-Nov-12%2014:09:01output.mov之类的videoURL

我通过使用以下代码将其转换为DATA来保存此videoURL。

let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext

let entity = NSEntityDescription.entity(forEntityName: "Device", in: context)

let newEntity = NSManagedObject(entity: entity!, insertInto: context)

self.videoData =  NSData(contentsOf: self.videoURL as URL)! as Data

newEntity.setValue(self.videoData, forKey:"videoURL")

do {

    try context.save()
    print("saved")

} catch {
    print("not saved") 
}

但是获取时我无法将此数据转换为url。谁能指导我如何完成这项任务?

2 个答案:

答案 0 :(得分:1)

您要保存加载的视频数据,而不是URL。

将属性Utilities.ProgressBar的类型设置为public static ProgressDialog ProgressBar(Context context, string position) { var pbr = new ProgressDialog(context); pbr.SetCancelable(false); pbr.Indeterminate = true; pbr.SetProgressStyle(ProgressDialogStyle.Spinner); switch (position.ToLower()) { case "c": pbr.Window.SetGravity(GravityFlags.Center); break; case "b": pbr.Window.SetGravity(GravityFlags.Bottom); break; } pbr.SetMessage("please wait.."); return pbr; } ,并将相应属性的类型设置为videoURL,然后保存URI

顺便说一句,请勿使用URLself.videoURL之类的NS类,而应使用NSURLNSData之类,强烈建议使用点符号访问URL属性时,而不是KVC Data

(value(forKey:)

答案 1 :(得分:0)

很抱歉,但这是错误的。为什么要将URL转换为数据?您只需将URL保存为字符串,然后获取此字符串并使用URL