2016-04-22 61 views
2

如何在UIImagePickerControllerMediaType上使用switch語句?如何在UIImagePickerControllerMediaType上使用switch語句?

下面的示例引發的怪編譯器錯誤:

Expression pattern of type 'CFString' cannot match values of type 'CFString'.

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 

    switch info[UIImagePickerControllerMediaType] as! CFString { 

    case kUTTypeImage: 
     break 

    default: 
     break 
    } 
} 

回答

3

我可以建議兩種方式來解決這種不便。

投到字符串

很簡單,但需要額外的打字。

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 
} 

見 「表達模式」 在語言參考Patterns章(SWIFT 2.2)。

+0

模式匹配運算 –

1

另一種方式來解決,這是鑄造NSString

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 

    switch info[UIImagePickerControllerMediaType] as! NSString { 
     case kUTTypeImage: 
      break 
     default: 
      break 
    } 
} 
+0

我覺得這是最好的解決辦法。 – werediver

+0

@werediver是的更短,感謝您在答案中指出表達式模式的寶貴背景信息。 – Manuel