2015-07-20 87 views
0

试图从我的UITableViewController到具有这些PFObjects的详细视图控制器...在此先感谢!准备segue ..从UITableView到DetailView与解析对象

错误我似乎无法调和...

“不能与类型‘字符串’的索引下标类型‘字符串’的值”我要被查询的对象呈现细节视图控制器上...

这里是我的查询和我的赛格瑞准备......我似乎无法访问该对象的SEGUE准备...

var customerName = [String]() 
    var customerAddress = [String]() 

    var query = Pfuser.query 
    query.whereKey("userId",equalTo:adminFollowingUser) 
    query.findObjectsInBackgroundWithBlock({ (adminObjects, error) -> Void in 

      if let objects = adminObjects { 

      for object in objects { 

    self.customerName.append(object["customerName"] as! String) 
    self.customerAddress.append(object["customerStreetAddress"] as! String) 

//下面是准备赛格......

 override func prepareForSegue(segue: UIStoryboardSegue, sender: 
     AnyObject?) 
     { 
     if (segue.identifier == "thesePools") 
     { 

     let employeeDetailVC: EmployeeDetailViewController = segue.destinationViewController 
    as! EmployeeDetailViewController 
    // indexPath is set to the path that was tapped 


let indexPath = self.tableView.indexPathForSelectedRow 

    let customerNameLabel = self.customerName[indexPath!.row] 
    let customerAddressLabel = self.customerAddress[indexPath!.row] 
employeeDetailVC.customerString = customerNameLabel 
    employeeDetailVC.addressString = customerAddressLabel 

这里是我的详细视图控制器接收字符串。

 //DetailViewController 

    var customerString = String() 
    var addressString = String() 

    override func viewDidLoad() { 
super.viewDidLoad() 

self.customerLabel.text = customerString 
self.addressLabel.text = addressString 

回答

1

VAR currentObject =字符串()是一个字符串,将其设置为在prepareForSegue.This字符串应该做的伎俩: self.customerTextField.text = curentObject 并删除所有其他的东西。

+0

我得到了所有的错误,但当我点击单元格它仍然不会继续..我三重检查了segue名称,删除和redid它三倍检查目标视图控制器的类名称...不知道还有什么做..我会说这是答案...但它仍然不工作:( –

+0

你有没有在故事板中的segue?你是怎么做到的?另外,如果你使用“didSelectRowAtIndexPath”,确保它不是“ didDeSelectRowAtIndexPath“,这是一个经常犯的错误,你也必须在表视图上”选择单击“,并将其绘制到视图控制器,以用于数据源和委托,并且必须实现tableviewcontroller委托。 /中。com/@ ronm333/a-simple-table-view-example-in-swift-cbf9a405f975 – user1700737

+0

这个文章太棒了!用那篇文章想出来了!非常感谢网址:) –

1

试一下

let nav = segue.destinationViewController as! CustomerDetailViewController 
    var indexPath :NSIndexPath = self.tableview.indexPathForSelectedRow()! 
     var object = self.CustomerName[indexPath.row] as! String 
      nav.currentobject = object 
+0

获得与您的代码相同的错误...“没有成员命名对象”...出于某种原因,我无法访问我的查询中的对象....我可以嵌套准备在我的查询segue,所以它知道它获得什么对象? –

+0

对象是你已经保存从解析中查询的东西的数组,你知道这是正确的。在你的情况下,它应该是** customerName **或** customAddress ** – Lamar

+0

我更新了代码,它应该是您正在使用的数组的名称 – Lamar

0

我会推荐使用PFQueryTableViewController。 这是一个由Parse提供的UI对象,可以更快地从类50x中加载数据。

下面是如何创建它的一个例子:

import UIKit 

class YourTableViewController: PFQueryTableViewController { 

// Initialise the PFQueryTable tableview 
override init!(style: UITableViewStyle, className: String!) { 
    super.init(style: style, className: className) 
} 

required init(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 

    // Configure the PFQueryTableView 
    self.parseClassName = "yourClass" 

    self.textKey = "yourObject" 
    self.pullToRefreshEnabled = true 
    self.paginationEnabled = false 
} 

// Define the query that will provide the data for the table view 
override func queryForTable() -> PFQuery! { 
    var query = PFQuery(className: "yourClass") 
    query.orderByAscending("yourObject") 


    return query 
} 

//override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject) -> PFTableViewCell { 

    var cell = tableView.dequeueReusableCellWithIdentifier("Cell") as CustomTableViewCell! 
    if cell == nil { 
     cell = CustomTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell") 
    } 

    // Extract values from the PFObject to display in the table cell 

    cell.info.text = object["info"] as String 


    // Date for cell subtitle 
    var dateFormatter = NSDateFormatter() 
    dateFormatter.dateFormat = "yyyy-MM-dd" 
    let dateForText = object["date"] as NSDate 
    cell.date.text = dateFormatter.stringFromDate(dateForText) 

    return cell 
} 

// In a storyboard-based application, you will often want to do a little preparation before navigation 
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

    // Get the new view controller using [segue destinationViewController]. 
    var detailScene = segue.destinationViewController as YourDetailViewController 

    // Pass the selected object to the destination view controller. 
    if let indexPath = self.tableView.indexPathForSelectedRow() { 
     let row = Int(indexPath.row) 
     detailScene.currentObject = objects[row] as? PFObject 
    } 
} 

在年底一定要还创建了一个自定义单元格类。