我正在开发一款允许用户将图片添加到数据模型的应用。 (我正在使用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
的一部分?
有人知道吗?
答案 0 :(得分:2)
为什么UIImage不是基金会的一部分?
为什么会这样? :)
UIImage类用于在iOS(以及扩展的iOS系列:watchOS,tvOS ......)上呈现图像。对于macOS,有NSImage类。
UIImage不在Foundation中是有道理的,因为Foundation在所有平台上都是共享的。
此外,图像不是计算系统基础的一部分,而基础类试图解决这个问题。
因此,处理图像不应该进入基础课程,而应该进入更高级别的课程,可能是特定平台的专业课程,以及Apple在UIImage和NSImage中所做的事情。