我应该如何将 UIImage 存储在我的 Core Data 数据库中?

2023-12-02

我正在开发一个应用程序,需要将大约 100 张或更多图像与其他相关信息一起预先插入到核心数据数据库中。

现在,我只需编写几行代码就可以轻松添加其他数据,但对于 UIImages,我不确定如何在不编写大量代码的情况下做到这一点。我想知道:是否有办法轻松做到这一点,或者如果没有,以最少的努力实现这一目标的最佳方法是什么。

另外,是否可以将图像存储在 Core Data 数据库中,或者我们应该只将图像的地址保存在本地文件系统上?


在核心数据数据库中存储图像非常容易。您只需将图像属性标记为可转换属性并创建 NSValueTransformer 的子类即可。在该子类中,添加如下代码:

+ (Class)transformedValueClass 
{
    return [NSData class]; 
}

+ (BOOL)allowsReverseTransformation 
{
    return YES; 
}

- (id)transformedValue:(id)value 
{
    if (value == nil)
        return nil;

    // I pass in raw data when generating the image, save that directly to the database
    if ([value isKindOfClass:[NSData class]])
        return value;

    return UIImagePNGRepresentation((UIImage *)value);
}

- (id)reverseTransformedValue:(id)value
{
    return [UIImage imageWithData:(NSData *)value];
}

对于可转换属性,请指定该子类的名称作为值转换器名称。

然后,您可以为托管此图像属性的实体创建一个 NSManagedObject 子类,并为此图像属性声明一个属性:

@property(nonatomic, retain) UIImage *thumbnailImage;

您可以从此属性读取 UIImage 或将 UIImage 写入此属性,它们将透明地更改为 NSData 或从 NSData 更改为存储在数据库中。

是否这样做取决于您的具体情况。较大的图像可能不应该以这种方式存储,或者至少应该在它们自己的实体中,以便在遵循与它们的关系之前它们不会被提取到内存中。小缩略图可能适合以这种方式放入数据库中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该如何将 UIImage 存储在我的 Core Data 数据库中? 的相关文章

  • 访问iOS 7隐藏的UITableViewCellScrollView?

    苹果改变了UITableViewCelliOS 7 中的层次结构 使用iOS 6 1 SDK
  • IOS Coredata 兼容 IOS 9 和 ios 10

    您好 我正在开发一个适用于 IOS 10 和 9 xcode 8 的应用程序 创建新实体对象的正确方法是什么 新的IOS 10有这个代码 var newEvent Event context context 我们如何让这段代码同时适用于 I
  • 错误 ITMS-9000 iTunes Connect

    我正在尝试上传一个phonegap build iOS应用程序到应用程序商店 我不断收到此错误 ERROR ITMS 9000 Missing Code Signing Entitlements No entitlements found
  • 在两个数字之间设置 UILabel 文本动画?

    我是 iPhone 和 Mac 编程新手 之前为 Windows 开发过 我有一个问题 我如何制作动画text的财产UILabel两个数字之间 例如从5 to 80以 Ease Out 风格 是否可以与CoreAnimation 我已经在谷
  • UIViewController 作为单例

    我在标签栏应用程序中有一个 UIViewController 我已经从 MainWindow nib 文件添加了控制器 即不是以编程方式 我的问题是如何使我的视图控制器成为单例 解决 Facebook 委托问题 您可能想让您的 Facebo
  • 在 Objective-C 中获取对象的属性数组

    Objective C 中是否可以获取对象所有属性的数组 基本上 我想做的是这样的 void save NSArray propertyArray self propertyNames for NSString propertyName i
  • Swift:在 Core Data 中存储自定义类的数组

    我是核心数据新手 但对于我的一个新项目 我想将我的数据保存到核心数据 我想创建一个 Reptile 类 其中包含几个自定义类数组 如果没有核心数据 我会得到这样的东西 import Foundation import UIKit class
  • UIWebView 如何检测 被点击

    我知道下面的方法可以检测链接元素点击 但我想知道是否UIView可以检测是否img元素被点击 BOOL webView UIWebView webView shouldStartLoadWithRequest NSURLRequest re
  • 从 AF.Request 响应获取数据

    我需要使用 Alamofire 的 Post 请求调用的 json 响应中的数据 但由于某种原因我无法访问该数据 我尝试按照 Alamofire github 文档以及这篇文章进行操作从 AF 响应 JSON 获取数据 https stac
  • 自定义 UISearchDisplayController

    替代文本 http img210 imageshack us img210 5992 searchdisplaycontroller png http img210 imageshack us img210 5992 searchdispl
  • 实时获取 Apple Watch heartRateVariabilitySDNN 吗?

    我正在使用下面的函数来获取 heartRateVariabilitySDNN 但它只获取一次并且不能像 heartbeat 那样实时计算 func HRVstart guard let quantityType HKObjectType q
  • iOS 中的词干 - 不适用于单个单词

    我在用NSLinguisticTagger用于词干提取 我能够获得句子中单词的词干 但无法获得单个单词的词干 以下是我正在使用的代码 NSString stmnt i waited NSLinguisticTaggerOptions opt
  • ios - 使用 SIGPIPE 和 SIG_IGN 的信号函数

    我加入了一个旧项目 我发现了这条线 BOOL application UIApplication application didFinishLaunchingWithOptions NSDictionary launchOptions si
  • 我正在寻找 GCDAsyncUdpSocket 上的一些示例,但发现没有一个有效

    接收数据从未被调用过 我编写了这个由我的主线调用的 swift 类UI视图控制器向接收消息的服务器发送消息 但当服务器发回响应时 客户端永远不会收到它 因为 didReceiveData 从未被触发 我一直在谷歌上搜索并查看文档 它说客户端
  • 如何确定 UINavigationController 中工具栏的高度?

    我有一个带有由 UINavigationController 呈现的工具栏的视图 当我处理 UIKeyboardWillShowNotification 时 我将整个屏幕向上滚动键盘的高度 问题是当显示键盘时 底部工具栏不显示 所以我只需将
  • swift 3.0 中的 Sha 256 加密语法错误

    func SHA256 gt String let data self data using String Encoding utf8 let res NSMutableData length Int CC SHA256 DIGEST LE
  • 使用排序函数按 NSDates 对数组进行排序[重复]

    这个问题在这里已经有答案了 我有一个名为的模型类Event import Foundation import MapKit public class Event let id Int var title String let status
  • 如何将 Cocoa 应用程序移植到 iPhone-OS?

    我即将创建一个 Cocoa 应用程序 我想确保有一天我可以轻松地将它移植到 iPad 甚至 iPhone 我该如何提前计划 我知道我将不得不重做所有 NIB 并可能设计一个不同的工作流程 但是代码呢 仅仅用 UIsomething 替换每个
  • UITableViewController 无法识别的选择器发送到实例

    当我传递一个整数时 我有一个 tableviewcontroller 和一个detailtableviewcontroller UITableViewController setSurveyNumber 无法识别的选择器发送到实例 Biza
  • HTML5 地理定位 - 在 iOS 上无法始终工作

    目前正在使用 HTML5 地理定位 我已经在所有网络浏览器上测试了它 它似乎工作正常 然而 当我在 iPad 上测试地理定位时 它在 iPad mini 上始终有效 但当我将其放在更大的 iPad iPad 2 上时 位置似乎并不总是有效

随机推荐

  • 如何在 Javascript 中编写 1 到 1000 之间的奇数和偶数的脚本?

    我正在研究一本 Javascript 书 其中有已解决的示例 但有一个示例没有解决方案 我想知道该怎么做 在javascript 在浏览器中 中 我应该做的是写1 1000的偶数 完成后写1 1000的奇数 我不知道如何在数字书写之间添加非
  • 黑莓推送通知教程

    我已向 RIM 注册进行推送通知评估 但我找不到实现推送通知的好来源 sdk中有一些示例 但我找不到实现它们的方法 所以 我正在寻找一个很好的教程 在那里我可以找到推送通知服务的逐步实现 RIM 的服务器端示例涉及设置 Web 应用程序容器
  • 如何启用同步而不每隔几秒同步一次

    我使用过 Google 的 Android 开发者文档 http developer android com training sync adapters 创建同步系统 我的应用程序现在在 帐户 下的 Android 设置 中有一个条目 当
  • 读取 pySpark 中的文件范围

    我需要读取 pySpark 中的连续文件 以下内容对我有用 from pyspark sql import SQLContext file events parquet exportDay 2015090 1 7 df sqlContext
  • gs:// 没有 CORS 配置

    我正在尝试在按钮单击事件上从 Firebase 存储中下载文件 但它给了我 Access Control Allow Origin 错误 https firebase google com docs storage web download
  • ajax 如何与 python 一起工作? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我一直在谷歌上搜索 但不太明白ajax是如何工作的 有人可以解释一下这是如何工作的吗 a
  • 根据线程 ID 过滤 adb logcat 的输出

    我正在使用 adb logcat v threadtime 来获取包含时间和线程 ID 的格式的输出 我想知道是否有一种方法可以根据线程 id tid 过滤输出 我只想从某些线程获取输出 现在我可以获得线程 ID 但不能获取过滤后的输出 T
  • 错误的坐标白色获取项目相对于其父项的真实位置

    我有一个简单的场景 只有 2 个Rectangles 区别在于第一个使用绝对坐标 第二个使用anchors 在这种情况下 两个矩形都放置在同一位置 但我得到的坐标完全不同 import QtQuick 2 4 import QtQuick
  • 获取 SQL Server 表中每列的每个值的计数

    所以我查了一下 这个问题非常相似 但缺少一个关键部分 SQL Server 计算表中每一列中不同值的数量 因此 在这个问题中 他们想要每列的不同计数 我想要做的是获取表中每一列的每个不同值的计数 并且我正在对特定数据库中的所有表执行此操作
  • 如何从 ElasticSearch 中彻底删除某些内容?

    我们使用 ELK 堆栈进行日志记录 我被要求设计一个流程来删除意外记录的敏感信息 现在基于我对 ElasticSearch Lucene 如何处理的阅读删除和更新数据仍在索引中 只是不可用 随着索引合并等 它最终会被清理 是否有一个流程来运
  • 动态三元运算符

    为什么以及如何在下面的代码中工作 dynamic x c a new D1 x new D2 但不是这个 dynamic x c a new D1 new D2 Code class Program static void Main str
  • 无法正确设置 Android Actionbar 背景

    问题当我设置 ActionBar 背景颜色时 该栏看起来像这样 我无法在这里上传图片 所以这是文件 Android ActionBar问题 我的价值观 风格文件
  • 如何在 Adob​​e Flex 中合并 DataGrid/Advanced DataGrid 中的单元格

    我需要合并单元格 如图所示 Flex 以我的理解 并没有直接提供这一点 你有几个选择 无论哪种方式 您可能需要在分层模型中排列数据 有 3 个孩子的家长似乎描述了您的问题 我看到的第一个选项涉及直接将您的数据声明为高级数据网格的分层结构 如
  • 找出 Eclipse 运行在什么 JVM 上

    我目前正在尝试调整 Eclipse 安装并遇到了 vm 选项 SO 上的其他帖子提到 始终使用可用的最新 JVM 是件好事 因为它们在性能方面不断变得更好 所以我很可能会这样做 我想知道如果您没有指定 vm 参数 您如何找出 Eclipse
  • jenkins 不执行 mvn 命令后的最后一个命令

    我将我的工作配置为自由式 我需要将案例运行到指定的机器上 我的项目是maven项目 我想在案例运行完成后将报告复制到主节点 詹金斯版本 1 483 我使用 pscp 复制文件 这些文件在 Windows 命令提示符下手动工作正常 我的命令如
  • 使用 PHP 和 PDO 访问 Microsoft

    我正在尝试连接到我的访问数据库 但无法连接 我的 Microsoft server 2008 上装有 IIS 7 我不断收到此错误消息 SQLSTATE IM002 SQLDriverConnect 0 Microsoft ODBC 驱动程
  • 陈述/计算的生日悖论

    显然 我实际上应该创建一个数组 在多次试验中随机分配生日 5000 然后 假设每次有 2 50 个人至少有 2 个生日时进行计数 并将结果除以 5 000 以获得近似概率 我相信我的循环搞砸了 需要一些反馈 不是代码 我想确切地了解出了什么
  • Hive SELECT 语句创建结构数组

    我在 Hive 中选择结构数组时遇到问题 我的源表如下所示 field id fieldid fieldlabel fieldtype answer id unitname 这是调查数据 其中id是调查id 中间的四个字段是响应数据 uni
  • 从 Excel VBA 运行 R,无需 RExcel

    这个过程可以简化吗 首先 我在 R 中手动打开该文件 C R ExampleModel ModelScript R 在 R 编辑器中 当从打开的 ModelScript R 文件运行以下代码时 它会正确处理 Model R 脚本 sourc
  • 我应该如何将 UIImage 存储在我的 Core Data 数据库中?

    我正在开发一个应用程序 需要将大约 100 张或更多图像与其他相关信息一起预先插入到核心数据数据库中 现在 我只需编写几行代码就可以轻松添加其他数据 但对于 UIImages 我不确定如何在不编写大量代码的情况下做到这一点 我想知道 是否有