为啥此代码会给出错误 Expected ',' 分隔符? [关闭]

Posted

技术标签:

【中文标题】为啥此代码会给出错误 Expected \',\' 分隔符? [关闭]【英文标题】:Why does this code give the error Expected ',' separator? [closed]为什么此代码会给出错误 Expected ',' 分隔符? [关闭] 【发布时间】:2016-06-29 21:17:17 【问题描述】:

当迁移到 swift 3 时,为什么这段代码不再工作,并要求它需要一个“,”分隔符?

  import UIKit

    class ProfileButton: UIButton 

        func setProfileImage(address: String?) 
            self.setImage(UIImage(named: "iconProfile"), for: [])
            if let img = address 
                if !img.isEmpty 
                    URLSession.shared().dataTask(URLRequest.with: imgRequest(image: img) as URLRequest, completionHandler: (data: Data?, response: URLResponse?, error: Error?) in
                        if let imageData = data, image = UIImage(data: imageData) 
                            dispatch_async(dispatch_get_main_queue()) 
                                self.setImage(image.profileImage(), forState: .Normal)
                            
                         else if let status = (response as? HTTPURLResponse)?.statusCode 
                            print("image loading status code: \(status)")
                        
                    ).resume()
                
            
        
    

【问题讨论】:

错误出现在哪一行? 一个问题是调度调用,它只能作为 Swift 3 中 DispatchXXX 类型的方法使用,所以这可能是 ***.com/questions/37801370/… 的副本。 如果您要在没有elseif let 中解包它,为什么要使用可选字符串? 【参考方案1】:

你有一个.,应该有一个(

URLSession.shared().dataTask(URLRequest.with: //...

应该是:

URLSession.shared().dataTask(URLRequest(with: //...

你有一个轻微的厄运金字塔案例。怎么样?

class ProfileButton: UIButton 

    func setProfileImage(address: String) 
        self.setImage(UIImage(named: "iconProfile"), for: [])

        guard !address.isEmpty else  return 

        let request = URLRequest(with: imgRequest(image: address) as URLRequest) 
            data, response, error in
            if let imageData = data, image = UIImage(data: imageData) 
                dispatch_async(dispatch_get_main_queue()) 
                    self.setImage(image.profileImage(), forState: .Normal)
                
             else if let status = (response as? HTTPURLResponse)?.statusCode 
                print("image loading status code: \(status)")
            
        

        URLSession.shared().dataTask(request).resume()
    

【讨论】:

第一次听到厄运金字塔这个词@AMomchilov,我的代码又出现了一个错误,所以我猜这就是你的意思。我是 swift 3 URLRequest 结构的完全菜鸟,我不知道为什么这个错误会从名为 request 的变量中显示出来。 它的说法是 imgRequest 是一个未解析的标识符 我在代码中保留了相同的imgRequest。我不知道它是什么。 “末日金字塔”是当您开始将许多块相互嵌套时形成的三角形。这通常表明设计不佳。在这种情况下,我转换了您的一些 if 语句,并将它们分解成更简单的部分

以上是关于为啥此代码会给出错误 Expected ',' 分隔符? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

为啥在导入模块时会显示此错误?

为啥我会收到此错误:模块构建失败(来自 ./node_modules/babel-loader/lib/index.js):语法错误 Unexpected token, expected "

为啥此代码给出错误

为啥此代码会导致分段错误错误?

为啥 Pydev 会给出内置关键字的语法错误?

为啥我会收到语法错误:SassError:预期的“”?