【发布时间】:2017-03-21 16:11:07
【问题描述】:
我正在开发一个允许用户将图片添加到数据模型的应用程序。 (我使用的是 Realm,但过去我对 CoreData 和 SQLite 做过同样的事情。)我开始使用如下代码构建模型对象:
import Foundation
import RealmSwift
class Picture: Object {
dynamic var imagePath: NSString = ""
var image: UIImage {
get {
...
}
set(UIImage) {
...
}
}
}
这当然会产生 Swift 编译器错误:
Use of undeclared type 'UIImage'
添加import UIKit 解决了这个问题,但后来我想知道:
为什么
UIImage不是数据模型类型?为什么
UIImage不是Foundation的一部分?
有人知道吗?
【问题讨论】:
-
但是为什么会这样呢?! UIImage 用于在 iOS 上呈现图像,有 NSImage 对应的 macOS。那么为什么 UIImage 会在 Foundation 中,知道 Foundation 在 所有 平台上共享?此外,图像不是基础的一部分。处理图像不应该放在 Foundation 中,而应该放在高级课程中。
-
我不知道答案,但也许 UIImage 应该仅用于在 UI 中呈现图像,其中 actual 图像存储为文件或 NSData .
-
@EricAya 您应该将其发布为答案。
-
@rmaddy 你说得对,我已经回答了。
-
我喜欢这样的想法,即 UIImage 是关于在 UI 中显示图像的内存后备存储,而不是文件表示对象。我猜MVC本质上有点分形。因此,我认为 UIImage 是“存储”图像并合法地成为我的数据模型的一部分。由于图像是一种常见的数据类型,这让我想知道它是否不应该成为较低级别框架的一部分。
标签: ios uiimage uikit foundation