|| (OR)在具有两个可能的NSString对象的IF语句中不起作用

use*_*509 -4 iphone if-statement objective-c uiimagepickercontroller ios

我有一个照片应用程序,让用户可以拍摄照片或视频,然后如果他们点击"使用照片"或"使用视频"按钮(取决于他们捕获的媒体类型),它会将照片或视频保存到相机胶卷.

这一切都适合拍照,我最初只设置应用程序拍照,但现在我添加了视频,我遇到了问题.我在我的应用程序中设置了一个if语句,用于kUTTypeimage或kUTTypeMovie,但它不喜欢我使用"||" 在我的if语句中用于"或".

它给出了"不兼容的整数到指针转换发送'int'到'NSString*'类型的参数的错误

我不明白为什么它会给我这个错误以及它为什么不让我使用|| 在我的if语句中用于"或".

这是我的ViewController.m文件中的代码块:

- (void)imagePickerController:pickerController didFinishPickingMediaWithInfo:(NSDictionary     *)info
{

NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];

if ([mediaType isEqualToString:(NSString *)kUTTypeImage || (NSString *)kUTTypeMovie])
{
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];

    UIImageWriteToSavedPhotosAlbum(image,nil,nil,nil);
}

[pickerController dismissModalViewControllerAnimated:YES];

}
Run Code Online (Sandbox Code Playgroud)

Gui*_*rme 7

||是一个逻辑或运算符,这意味着它与布尔数据进行比较. [stringOne isEqualToString:stringTwo]将返回一个布尔值,然后您可以将其与另一个布尔值进行比较||,但是您不能使用它一次进行两次比较,或者比较其他类型的布尔值BOOL.

你应该遵循@ wuiii的回答所描述的逻辑:

if ([mediaType isEqualToString:(NSString *)kUTTypeImage] || [mediaType isEqualToString:(NSString *)kUTTypeMovie]) {
  UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
  UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
}
Run Code Online (Sandbox Code Playgroud)