2015-10-15 3 views
0

, поэтому я создаю приложение с Swift 2 и Xcode 7 и используя Parse в качестве моей внутренней службы. У меня есть два контроллера вида, PFQueryTableViewController, чтобы показать список PFObjects, а другой - показать детали выбранных ячеек. Я понял способ сделать это, чтобы добавить уникальный идентификатор объекта в массив, а затем использовать didSelectRowAtIndexPath для выполнения segue. Но у меня проблемы с добавлением элементов в массив здесь. Сверхурочная работа Я добавляю и печатаю массив, он показывает элементы 2 раза. Итак, если правильный массив [1,2,3,4], то то, что я получаю, [1,2,3,4,1,2,3,4], действительно странно.Дублирующие значения, добавленные в PFQueryTableViewController

var arrayOfGameId = [String]() 
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> PFTableViewCell? { 
    let cellIdentifier = "cell" 

    var cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as? PFTableViewCell 
    if cell == nil { 
     cell = PFTableViewCell(style: .Subtitle, reuseIdentifier: cellIdentifier) 
    } 
    if let object = object { 
     cell!.textLabel?.text = object["Title"] as? String 
     cell!.detailTextLabel?.text = object["Platform"] as? String 
     if let thumbnail = object["Image"]! as? PFFile { 
      cell!.imageView!.image = UIImage(named: "game1.png") 
      cell!.imageView!.file = thumbnail 
     } 
     let gameid = object["GameId"] as! String! 
     arrayOfGameId.append(gameid) 
    } 
    print(arrayOfGameId) 
    return cell 
} 

ответ

0

Поскольку вы используете PFQueryTableViewController нет никакой необходимости, чтобы сделать свой собственный список ObjectIds.

Возвращенные PFObjects от queryForTable автоматически сохраняются в списке под названием objects.

Если вам нужно получить выделенный объект и перейти к контроллеру подробного представления, вам даже не нужно использовать didSelectRowAtIndexPath, попробуйте следующее.

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    // Get the new view controller using [segue destinationViewController] 
    var detailsVC = segue.destinationViewController as! DetailsViewController 

    // Pass the selected object to the destination view controller 
    if let indexPath = self.tableView.indexPathForSelectedRow() { 
     let row = Int(indexPath.row) 

     // selectedObject is the PFObject to be displayed 
     detailsVC.selectedObject = (objects?[row] as! PFObject) 
    } 
} 
+0

Большое вам спасибо! – WhiteRice

+0

С удовольствием помогаем и приветствуем StackOverflow! Пожалуйста, поддержите, если это полезно, и отметьте как ответ, если ваша проблема решена – Russell