如何在UIImagePickerControllerMediaType
上使用开关语句
下面的示例引发奇怪的编译器错误:
“CFString”类型的表达式模式不能与“CFString”类型的值相匹配。
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
switch info[UIImagePickerControllerMediaType] as! CFString {
case kUTTypeImage:
break
default:
break
}
}
发布于 2016-04-22 07:22:02
我可以提出两种解决这一不便的方法。
转换为字符串
很简单,但需要额外的打字。
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
switch info[UIImagePickerControllerMediaType] as! String {
case String(kUTTypeImage):
break
default:
break
}
}
实现CFString类型的模式匹配操作符
如果您经常需要打开CFString
,则需要更多的技巧,但更少的输入。
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
switch info[UIImagePickerControllerMediaType] as! CFString {
case kUTTypeImage:
break
default:
break
}
}
func ~=(pattern: CFString, value: CFString) -> Bool {
return pattern == value
}
参见语言参考(SWIFT2.2)中模式章节中的“表达式模式”一节。
发布于 2016-04-22 07:41:42
解决这一问题的另一种方法是将其转换为NSString
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
switch info[UIImagePickerControllerMediaType] as! NSString {
case kUTTypeImage:
break
default:
break
}
}
https://stackoverflow.com/questions/36797399
复制