未解析的标识符范围

Posted

技术标签:

【中文标题】未解析的标识符范围【英文标题】:Unresolved Identifier Scope 【发布时间】:2017-01-02 22:53:54 【问题描述】:

我是 Swift 3 的新手,我对以下代码有疑问:

func downloadData() ... downloads data about actors in JSON and initializes a Struct Actor

然后:

class MasterViewController: UITableViewController 

    var dataArray = [Actor]() //declare an empty array of type Actor

     override func viewDidLoad() 

        super.viewDidLoad()

        dataArray = downloadData() //to populate an empty array with data downloaded from web

      print(dataArray)

当我尝试编译代码时,我收到错误未解析的标识符。我认为这是因为范围。谁能指出我正确的方向?谢谢!

【问题讨论】:

我们需要更多信息才能继续。什么标识符未解析?错误发生在哪里? 你在哪里定义downloadData()?它返回什么?它是从 Web 下载数据时的异步函数吗?如果是,您需要回调或委托等。 为什么要新建一个数组,赋值给dataArray,然后马上用downloadData()的结果覆盖? 【参考方案1】:

您的函数/方法downloadData() 不返回任何内容。

【讨论】:

【参考方案2】:
class MasterViewController: UITableViewController 

    var dataArray = [Actor]() //declare an empty array of type Actor

    override func viewDidLoad() 

        super.viewDidLoad()

        dataArray = downloadData() //to populate an empty array with data downloaded from web

        print(dataArray)
    

    func downloadData() -> [Actor] 

        return [Actor]()
    

只需实现 downloadData 方法。 编辑: 您可以使用 EVReflection 和 Alamofire(Pods) 下载 json 并创建 Actors 并填充数组。

【讨论】:

当我尝试填充一个空数组 dataArray = downloadData() 时收到此错误:无法将 type() 的值分配给类型 [Actor]。 你确定你的代码中有“func downloadData() -> [Actor]”吗?

以上是关于未解析的标识符范围的主要内容,如果未能解决你的问题,请参考以下文章

使用未解析的标识符“kCAFillModeForwards”

使用未解析的标识符 'json' (Swift 3) (Alamofire)

使用未解析的标识符 countElements [重复]

出现错误:使用未解析的标识符“LinkingObjects”

SDKApplicationDelegate 使用未解析的标识符

使用未解析的标识符“tableView”