您的位置:首页 > 移动开发 > Swift

swift编码出现Call can throw, but it is not marked with 'try' and the error is not handled错误的解决

2015-12-08 14:04 323 查看
最近使用Swift编程中,遇到一个问题,就是出现了Call can throw, but it is not marked with ‘try’ and the error is not handled的错误。

我做的是获取视频的首帧图片,在使用到
copyCGImageAtTime(requestedTime: CMTime, actualTime: UnsafeMutablePointer<CMTime>) throws -> CGImage
方法时,出现了Call can throw, but it is not marked with ‘try’ and the error is not handled的错误。刚开始以为是参数的错误,因为在OC该方法是这样的
- (nullable CGImageRef)copyCGImageAtTime:(CMTime)requestedTime actualTime:(nullable CMTime *)actualTime error:(NSError * __nullable * __nullable)outError
,纠结好久,上网查阅相关资料,解决了!下面看一下:

这是OC中方法的解释:

[code]/*!
    @method         copyCGImageAtTime:actualTime:error:
    @abstract       Returns a CFRetained CGImageRef for an asset at or near the specified time.
    @param          requestedTime
                    The time at which the image of the asset is to be created.
    @param          actualTime
                    A pointer to a CMTime to receive the time at which the image was actually generated. If you are not interested
                    in this information, pass NULL.
    @param          outError
                    An error object describing the reason for failure, in the event that this method returns NULL.
    @result         A CGImageRef.
    @discussion     Returns the CGImage synchronously. Ownership follows the Create Rule.
*/

- (nullable CGImageRef)copyCGImageAtTime:(CMTime)requestedTime actualTime:(nullable CMTime *)actualTime error:(NSError * __nullable * __nullable)outError CF_RETURNS_RETAINED;


这是Swift中方法的解释

[code]/*!
        @method         copyCGImageAtTime:actualTime:error:
        @abstract       Returns a CFRetained CGImageRef for an asset at or near the specified time.
        @param          requestedTime
                        The time at which the image of the asset is to be created.
        @param          actualTime
                        A pointer to a CMTime to receive the time at which the image was actually generated. If you are not interested
                        in this information, pass NULL.
        @param          outError
                        An error object describing the reason for failure, in the event that this method returns NULL.
        @result         A CGImageRef.
        @discussion     Returns the CGImage synchronously. Ownership follows the Create Rule.
    */

    public func copyCGImageAtTime(requestedTime: CMTime, actualTime: UnsafeMutablePointer<CMTime>) throws -> CGImage


这是我出现问题代码的截图:




解决办法:

编码出现error:Call can throw, but it is not marked with ‘try’ and the error is not handled,通过加一个try解决,原因就是没有处理错误 (PS: 就像Java中的异常错误处理,也是采用 try …catch)

最终解决错误的代码:

[code]func getThunbImage(url: NSURL) -> (UIImage) {
        let asset: ***URLAsset = ***URLAsset(URL: url, options: nil)
        let gen: ***AssetImageGenerator = ***AssetImageGenerator(asset: asset)
        gen.appliesPreferredTrackTransform = true
        let time: CMTime = CMTimeMakeWithSeconds(0, 1)
        var actualTime: CMTime = CMTimeMake(0, 0)
        var thumb: UIImage = UIImage()
        do {
        let image: CGImageRef = try gen.copyCGImageAtTime(time, actualTime: &actualTime)
        thumb = UIImage(CGImage: image)
        } catch { }
        return thumb
    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: