当前位置: 首页 > 知识库问答 >
问题:

我的swift项目缺少预期/参数的编码错误

储阳曦
2023-03-14

我的项目有一个问题,它一直在之后请求预期的参数类型。

        // expected parameter type following ':' &             expectedseperator ,
        func performGetRequest(targetURL: NSURLRequest, completion: { (data, HTTPStatusCode, error) -> Void in

            if HTTPStatusCode == 200 && error == nil {

            // Convert the JSON data to a dictionary.
            let resultsDict = NSJSONSerialization.JSONObjectWithData(data!, options: nil, error: nil) as! Dictionary<NSObject, AnyObject>

            let items: AnyObject! = resultsDict["items"] as AnyObject!
            let firstItemDict = (items as! Array<AnyObject>)[0] as! Dictionary<NSObject, AnyObject>

            let snippetDict = firstItemDict["snippet"] as! Dictionary<NSObject, AnyObject>

            var desiredValuesDict: Dictionary<NSObject, AnyObject> = Dictionary<NSObject, AnyObject>()
            desiredValuesDict["title"] = snippetDict["title"]
            desiredValuesDict["description"] = snippetDict["description"]
            desiredValuesDict["thumbnail"] = ((snippetDict["thumbnails"] as! Dictionary<NSObject, AnyObject>)["default"] as! Dictionary<NSObject, AnyObject>)["url"]


            desiredValuesDict["playlistID"] = ((firstItemDict["contentDetails"] as! Dictionary<NSObject, AnyObject>)["relatedPlaylists"] as! Dictionary<NSObject, AnyObject>)["uploads"]

            self.channelsDataArray.append(desiredValuesDict)

            self.tblVideos.reloadData()

            ++self.channelIndex
            if self.channelIndex < self.desiredChannelsArray.count {
            self.getChannelDetails(useChannelIDParam)
            }
            else {
            self.viewWait.hidden = true
            }

            } else {
            println("HTTP Status Code = \(HTTPStatusCode)")
            println("Error while loading channel details: \(error)") }

            })
    }        
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

共有2个答案

东郭元魁
2023-03-14
var desiredChannelsArray = ["eminemvevo", "Google", "disney"]

    var channelIndex = 0

    var channelsDataArray: Array<Dictionary<NSObject, AnyObject>>.Type?


    override func viewDidLoad() {
        super.viewDidLoad()

    }  class helper {
        func performGetRequest(targetURL: NSURL!, completion: (data: NSData?, HTTPStatusCode: Int, error: NSError?) -> Void) {

            let request = NSMutableURLRequest(URL: targetURL)
            request.HTTPMethod = "GET"

            let sessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration()

            let session = NSURLSession(configuration: sessionConfiguration)

            let task = session.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in
                dispatch_async(dispatch_get_main_queue(), { () -> Void in
                    completion(data: data, HTTPStatusCode: (response as! NSHTTPURLResponse).statusCode, error: error)})})


            task.resume()
        }
    }

    func getChannelDetails(useChannelIDParam: Bool) {
        var urlString: String!
        if !useChannelIDParam {
            urlString = "https://www.googleapis.com/youtube/v3/channels?part=contentDetails,snippet&forUsername=\(desiredChannelsArray[channelIndex])&key=\(apiKey)"
        } else {
        }

        let targetURL = NSURL(string: urlString)

        func performGetRequest(targetURL: NSURL!, completion: (data: NSData?, HTTPStatusCode: Int, error: NSError?) -> Void) {

            if HTTPStatusCode == 200 && error == nil{
                // Convert the JSON data to a dictionary.

                let resultsDict = NSJSONSerialization.JSONObjectWithData(data!, options: nil, error: nil) as! Dictionary<NSObject, AnyObject>}

            let items: AnyObject! = resultsDict["items"] as AnyObject!
            let firstItemDict = (items as! Array<AnyObject>)[0] as! Dictionary<NSObject, AnyObject>

            let snippetDict = firstItemDict["snippet"] as! Dictionary<NSObject, AnyObject>

            var desiredValuesDict: Dictionary<NSObject, AnyObject> = Dictionary<NSObject, AnyObject>()
            desiredValuesDict["title"] = snippetDict["title"]
            desiredValuesDict["description"] = snippetDict["description"]
            desiredValuesDict["thumbnail"] = ((snippetDict["thumbnails"] as! Dictionary<NSObject, AnyObject>)["default"] as! Dictionary<NSObject, AnyObject>)["url"]


            desiredValuesDict["playlistID"] = ((firstItemDict["contentDetails"] as! Dictionary<NSObject, AnyObject>)["relatedPlaylists"] as! Dictionary<NSObject, AnyObject>)["uploads"]

            self.channelsDataArray.append(desiredValuesDict)

            self.tblVideos.reloadData()

            ++self.channelIndex
            if self.channelIndex < self.desiredChannelsArray.count {
                self.getChannelDetails(useChannelIDParam)
            }
            else {
                self.viewWait.hidden = true
            }
        } else {

            print("HTTP Status Code = \(HTTPStatusCode)")
            print("Error while loading channel details: \(error)") }
    }
}
}
狄冠宇
2023-03-14

似乎您正在尝试调用函数performGetRequest,但您在开始时用函数定义它。

如果这不是你的意图,也许你正在尝试定义函数,但是你必须小心完成处理程序。你可以在这里看到正确的方法。

最后,这是一个具有相同名称的函数和类似问题的问题。我不知道你的代码是否基于此,但看看这个问题及其答案可能会很澄清。

 类似资料:
  • 我一直在尝试将Zendesk添加到我的swift项目中,并一直在尝试遵循以下步骤: https://developer.zendesk.com/embeddables/docs/ios_support_sdk/sdk_add#使用cocoapods添加-the-sdk-white 我已经使用以下命令添加了pod: 并将其添加到我的项目的: 但是,当我尝试运行我的项目时,我得到了这个错误: 我一直在

  • 问题内容: 我有一个重写版本discord.py。如果消息中包含内容,则不会发生错误。如果消息中内容不存在,则我希望该错误不会发生。 我的代码: 完整回溯: 问题答案: 命令解析参数的方式意味着定义 表示需要单词作为命令调用的一部分。如果您想捕获消息的其余部分,则可以使用仅关键字参数语法: 此功能在此处记录。

  • 问题内容: 嗨,我是Android编程的新手,我想问的问题可能很简单,但是我对如何使其工作一无所知,请多多包涵。 我从Android开发人员网站安装了android-sdk和相关工具。我按照他们的指示创建了HelloWorld应用,但出现了一些我不理解的错误。 文件MainActivity.java是一个自动生成的文件,在以下位置,我不断出现此文件错误: 因此,我尝试浏览生成的class文件中的l

  • 我的STS版本:3.7.1.RELEASE,内部版本Id:201510041213,平台:Eclipse Mars。1(4.5.1)在选择例如Spring Starter project时没有创建正确的项目 当与我现有的一个项目进行比较时,我可以看到缺少了Builder。创建的项目仅包含Maven Builder 我的参考项目有Maven、Java和Spring project Builders。

  • 问题内容: 我正在尝试使用将a的布尔值传递给另一个类。由于某些原因,在包含开关的类中,应该将值设置为的语句无法读取开关声明。 ViewController.swift 在第一个If语句(shrimpSwitch.on)中,它将显示Expected Declaration。我是在声明所有开关错误吗?任何帮助,将不胜感激。谢谢 问题答案: 问题是您需要将代码放入方法中。您所需要做的就是将其移动到vie

  • 附言。我也尝试安装Java插件,但没有什么变化。NetBeans的版本是8.2。 多谢帮忙。