【问题标题】:Why do I get a "Value of type 'TableViewController' has no member 'place' ''? [closed]为什么我会收到“'TableViewController' 类型的值没有成员'place'''?[关闭]
【发布时间】:2016-06-06 14:54:27
【问题描述】:

我想从 parse (a string) 下载一些数据,但我得到了错误

"Value of type 'TableViewController' has no member 'place' 在上面写着:

self.place.append(spotdetail.name!)

我把它作为一个全局变量:

var place = [""]

这是我在 ViewDidLoad 中的代码:

let query = PFObject.query()
query!.findObjectsInBackgroundWithBlock ({ (objects, error) in

    if let skateparks = objects {
        for object in skateparks {        
            if let spotdetail = object as PFObject! {                            
                self.place.append(spotdetail.name!)        
                self.tableView.reloadData()                           
            }        
        }        
    }

    print(place)               
})

我不明白为什么它不能识别var place,因为它在同一个视图控制器(tableView)中,我可以改变什么来让它工作

谢谢!

【问题讨论】:

  • 我怀疑错误消息出现在该行上,因为它与该行没有任何关系。请显示更多上下文或发布错误的屏幕截图作为证据。
  • 抱歉,输入问题时出错,现在已更正@luk2302
  • 如果它是一个全局变量,那么你就说place.append——它不是self的实例成员。

标签: xcode swift parse-platform


【解决方案1】:

在闭包的任何地方,您都应该使用self 关键字作为属性:

print(self.place)

【讨论】:

  • 在出现问题的行中我确实有一个自我self.rideSpots.append(spotdetail.name!) 如果我在打印中添加一个自我,我会收到一个错误
  • @stephenD 都是关于你在哪里声明了place 变量。如果它是您的视图控制器类属性,那么您应该使用 self 关键字。但似乎你在 viewDidLoad 方法的开头声明了它,那么你不应该使用 self 关键字,因为闭包会为你捕获它。
  • 谢谢!移动了 var,它现在正在工作,
【解决方案2】:

正如 originaluser2 指出的那样,您使用的是全局变量,因此您不需要用户 self.place。另外我不确定你在 PFObject 中是什么子类,但你的函数名称是 findObjectsInBackgroundWithBlock 并且你正在那里重新加载你的表数据。请始终牢记,您只能在主线程上与 UI 进行交互。这会导致错误,因此您可以传回一个回调,或者对主队列进行 GCD 调用,然后在那里重新加载数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    • 2022-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多