单个条目中的多个图像 - Swift 中的核心数据

Posted

技术标签:

【中文标题】单个条目中的多个图像 - Swift 中的核心数据【英文标题】:Multiple images in a single entry- Core Data in Swift 【发布时间】:2016-04-04 08:39:07 【问题描述】:

我正在用 Swift 创建一个 Core Data 应用程序。这是一个类似于日记的应用程序,用户可以在其中输入带有标题字段和图像选择器的条目。现在,我只有 1 个二进制数据类型的图像属性。我想要的是让用户能够为每个条目选择超过 1 个图像。如何用 1 个条目链接多张图片?

【问题讨论】:

将 coredata 中的图像保存为二进制不是一个好主意。您应该尝试将其保存到磁盘并将文件路径作为属性插入。也回答你的主要问题。您应该有另一个名为 images 的条目,并且您必须在日记条目和图像条目之间设置 1-n 关系。 你找到解决办法了吗? @SonicMaster 当时我在同一个核心数据实体中使用了 3 个图像数据字段。但后来,我学会了如何为图像使用不同的实体并与主要实体建立关系。我用这种关系逻辑创建了另一个应用程序。 那么基本上你创建了两个实体(主要实体和图像实体)?在主实体中,您创建与您的图像实体有关系的图像字段? 在主实体中,您可以创建一个键,例如时间戳,在图像实体中,您可以创建一个二进制字段属性或图像路径属性加上另一个可以是 id 的属性,当保存文档/实体,确保主实体的键和图像实体的所有键/ID具有相同的值。因此,您可以通过过滤特定值的 id 来访问特定实体的所有图像。这样,您就不需要创建关系模型。这是一种更简单的方法。 【参考方案1】:
    创建一个附加实体,例如名称为“images”。 通过界面编辑器连接它们(双向)条目图像 创建 NSManagedClasses(或更新它们)

现在您可以为每个条目设置图像。与:

let entry = NSEntityDescription.insertNewObjectForEntityForName("entry", inManagedObjectContext: context) as! YourModel (Entry)

//When you now save an image, just do:

let image = NSEntityDescription.insertNewObjectForEntityForName("myImage", inManagedObjectContext: context) as! MyImage
entry.myImage = image // this will "connect" your image with your main NSManagedObject

类示例:

class Entry: NSManagedObject 
    @NSManaged var myImage: [MyImage]?

【讨论】:

谢谢,我会试试的。但是,什么是 [MyImage] ?不应该是 [NSData] 吗? MyImage 是一个 NSManagedObject。所以它是 sql 表中的 1 行(简单地说)-一行可以包含多个列(即对象属性)->如果您只需要 1 个字段(包含 NSData)创建一个 NSManagedObject 具有 1 个称为“数据”的属性(对于示例) 非常感谢。如果它有效,我会在明天告诉你。 网络上有数百个 CoreData 教程。我会先尝试其中的一些,以了解 CoreData 是如何工作的。如果您有任何具体问题,请随时提出。 好的,谢谢。因为,我从来没有与多个实体合作过,所以,一个问题:我确实需要添加一个“关系”,对吧?在“条目”实体中:rel。名称为“图像”,目标:“图像”,反向:“图像”;然后在“图像”实体中:,rel。名称:“entry”,Des.:“Entry”,逆:“entry”。对吗?

以上是关于单个条目中的多个图像 - Swift 中的核心数据的主要内容,如果未能解决你的问题,请参考以下文章

按核心数据中的日期组件获取条目

Swift 3 中的 JSON 图像和核心数据 [关闭]

swift核心数据:保存相机中的图像

Youtube Data API:在单个请求中按 ID 检索多个视频条目

SQL - 需要在单个表中标识多个组中的最新条目

根据 Swift Core Data 中的关系获取与特定实体相关的所有条目