ios - 将数组保存到 Core Data
问题描述
我创建了两个数组(imgUrl 和 imgTitle)。我想将这些数组值保存在 Core Data 中。我尝试如下。然而,它并不成功。
//Mark:- Method to save data in local data base(CoreData)
func saveDataInLocal(imageUrl: [String], imageTitle: [String]){
let context = CoreDataStack.sharedInstance.persistentContainer.viewContext
let contactEntity = NSEntityDescription.entity(forEntityName: "Photos", in: context)
let newContact = NSManagedObject(entity: contactEntity!, insertInto: context)
for eachValue in imageTitle{
newContact.setValue(eachValue, forKey: "imgTitle")
}
for eachValue in imageUrl{
newContact.setValue(eachValue, forKey: "imgUrl")
}
do {
try context.save()
fetchData()
} catch {
print("Failed saving")
}
}
XcmodelID 如图所示。
在这两个数组中,一个是图像标题,另一个是图像 URL。获取我正在做的如下所示。
//Mark:- Method to fetch data from local database(CoreData)
func fetchData(){
let context = CoreDataStack.sharedInstance.persistentContainer.viewContext
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Photos")
request.returnsObjectsAsFaults = false
do {
let result = try context.fetch(request)
for data in result as! [NSManagedObject] {
imgTitleNew.append(data.value(forKey: "imgTitle") as! String)
imgUrlNew.append(data.value(forKey: "imgUrl") as! String)
}
} catch {
print("Failed")
}
DispatchQueue.main.async {
self.myCollectionView.reloadData()
}
}
有人可以建议如何将数组保存在 Core Data 中吗?
数组数据显示如下。
var imgUrl = [String]() //contains urls in array
var imgTitle = [String]() //contains titles in array
解决方案
一个简单的解决方案是保存两个用制表符(或其他唯一)字符连接的数组,并使用计算属性进行转换
假设核心数据属性被声明为
@NSManaged public var imageURL: String
@NSManaged public var imageTitle: String
添加这两个计算属性
var imageURLArray : [String] {
get { return imageURL.components(separatedBy: "\t") }
set { imageURL = newValue.joined(separator: "\t") }
}
var imageTitleArray : [String] {
get { return imageTitle.components(separatedBy: "\t") }
set { imageTitle = newValue.joined(separator: "\t") }
}
推荐阅读
- dynamics-crm - Dynamics 365 - 为什么旧版本的 PCF 网格组件在安装新组件后运行?
- typescript - Nrwl / Nx - 如何构建由浏览器使用的单个 js 文件,并捆绑了依赖项
- c# - 如何使用 Googlemaps 并应用 Dijkstra 算法,但我不知道如何分配顶点?
- python - 如何一次将一个函数应用于多个数据库?
- php - 使用 wp_generator 隐藏 Wordpress 版本
- android - 如何使用 .smali 文件轻松理解和修改代码?
- c++ - 如何检查一个类是否是无状态的?
- javascript - 在 Angular 中操作组件的 DOM 元素
- node.js - nodejs oracledb externalAuth(使用oracle钱包)
- python - 如何使用最大值填充具有重复索引的图像