为什么在这里迅速使用struct作为字典键而不是字符串?

时间:2019-05-15 11:10:30

标签: ios swift dictionary uiimagepickercontroller

为什么UIImagePickerController.InfoKey类型的结构不是字符串,使用struct作为字典键而不是字符串有什么好处?

public struct InfoKey : Hashable, Equatable, RawRepresentable {

    public init(rawValue: String)
}
}
extension UIImagePickerController.InfoKey {


public static let mediaType: UIImagePickerController.InfoKey

public static let originalImage: UIImagePickerController.InfoKey // a UIImage

public static let editedImage: UIImagePickerController.InfoKey // a UIImage

public static let cropRect: UIImagePickerController.InfoKey // an NSValue (CGRect)

1 个答案:

答案 0 :(得分:1)

这很简单,好处是能够在编译期间检查键值。这样,您将无法直接传递String,如果这样做,则必须手动将其包装到InfoKey结构中,以使意图明确。

大多数情况下,您应该使用预定义常量之一。

enum是一个更好的解决方案,但可能会破坏一些现有代码(并且不能在Objective-C中真正实施)。

如果Apple工程师今天正在创建新的API,他们甚至可能不会使用字典,而是会使用自定义对象将值传递给委托方法。