问:我已经在这个应用程序上工作了一段时间,但我正面临一个我不知道如何解决的问题。我正在使用 Parse 进行数据管理。我可以一一读取来自不同类的数据,但现在我想将我的数据列出到表视图中。我已经尝试了很多选择,但我无法解决这个问题。
我如何拥有可以存储一些可以在任何函数中使用的数据的全局变量?如何根据我在 Parse 查询中执行的计数函数设置行数?如何将单元格标题设置为 Parse 中的对象标题?
你能指导我吗?提前致谢。我在下面分享我的代码:
import UIKit
import Parse
class faFirstTableViewController : UITableViewController { var totalRows = 3 var objectTwo = [ "arash" ] override func viewDidLoad () { super . viewDidLoad ()让query = PFQuery ( className : "TestObject" )查询。whereKey ( "foo" , equalTo : "bar" )
查询。findObjectsInBackgroundWithBlock
{ ( objects : [ PFObject ]?, error : NSError ?) -> Void in if error == nil { // 查找成功。打印(“成功检索\(对象!。计数)分数。” )//如果让对象=对象为[ PFObject ] ,对找到的对象做些什么?{为对象
在 对象
{打印(对象。OBJECTID )自我。对象二。追加(对象。OBJECTID !)}自我。totalRows =对象。count print ( self . totalRows ) } } else { // 记录失败的详细信息print ( "Error: \( error ! ) \( error !. userInfo )
" )
} } // 取消注释以下行以保留演示文稿之间的选择// self.clearsSelectionOnViewWillAppear = false // 取消注释以下行以在此视图控制器的导航栏中显示编辑按钮。// self.navigationItem.rightBarButtonItem = self.editButtonItem()}覆盖FUNC didReceiveMemoryWarning (){超级。didReceiveMemoryWarning ()//处置可重新创建任何资源} // MARK:-表视图数据源倍率FUNC numberOfSectionsInTableView (
tableView : UITableView ) -> Int {
// #warning 不完整实现,返回节数return 0 } override func tableView ( tableView : UITableView , numberOfRowsInSection section : Int ) -> Int { // #warning 不完整实现,返回数行返回totalRows } override func tableView ( tableView : UITableView , cellForRowAtIndexPath
indexPath : NSIndexPath ) -> UITableViewCell {
let Cell : faFirstTableViewCell = tableView 。dequeueReusableCellWithIdentifier ( "Cell" )为! faFirstTableViewCell单元格。细胞标题。text = objectTwo [ indexPath . row ] as String return Cell }
答:首先,为了在表格视图中显示数据,它必须至少有一个部分。因此,在您的情况下numberOfSectionsInTableView应该返回1。
覆盖 func numberOfSectionsInTableView ( tableView : UITableView ) -> Int {
return 1 }
其次,numberOfRowsInSection应该返回数据源中的对象数,在您的情况下称为objectTwo. 无需使用名为totalRows. 这在此处尤为重要,因为您使用 3 对其进行初始化,但此时您的数据源仅包含一个字符串,如果数组中的对象少于三个,则您的应用程序将崩溃。确保行数与您的数据源保持同步,最简单的方法是直接返回您的数据源的计数。
覆盖 func tableView ( tableView : UITableView , numberOfRowsInSection 部分: Int ) -> Int {
return objectTwo . 计数}
第三,每当您的数据源发生变化时,您都必须手动更新我们的 tableview。当您从 Parse 异步加载数据时,请self.tableView.reloadData()在收到对象并将它们附加到objectTwo.
由于我不知道您的自定义单元格是什么样子,我只是假设您在cellForRowAtIndexPath.
表视图/集合视图是 iOS 中一个巨大而重要的概念。我真的建议您熟悉它,尽可能多地观看教程,因为它们也可能非常棘手:)
最后一件事。请确保遵循 Swift 命名约定:
// 类、结构、枚举、协议总是以大写开头,没有前缀 swift:
class faFirstTableViewController ... // 没有
class FirstTableViewController ... // 是
// 变量、常量、类属性总是以小写开头... Cell 。细胞标题。文本... // 没有...单元格。单元格标题。文本... // 是的