2016-03-28 3 views
0

Я обновляю весь свой быстрый синтаксис после обновления до xcode 7.3 При этом у меня появились некоторые ошибки около , и я считаю, что эта ошибка также вызывает Ошибка сигнала.Сбой команды из-за сбоя сигнала - Swift 2.2 Xcode 7.3

enter image description here

enter image description here

Код в вопросе:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    var arry:NSArray = Array(self.participants) 
     arry = arry.sort { 
     item1, item2 in 
     // ambiguous use of subscript swift error for both these lines 
     let date1 = item1["fullName"] as String 
     let date2 = item2["fullName"] as String 
     return date1 > date2 
    } 

Edit

Декларация participants исходит от другого контроллера здесь:

enter image description here

 func gotoMembers(){ 

     let set:NSSet = self.conversation.participants 
     let arr = set.allObjects //Swift Array 
     UserManager.sharedManager.queryForAllUsersWithCompletion(arr as! [String], completion:{ (users: NSArray?, error: NSError?) in 
      if error == nil { 
       //participants declared here and passed into the participant controller 
       let participants = NSSet(array: users as! [PFUser]) as Set<NSObject> 
       let controller = ParticipantTableViewController(participants: participants, sortType: ATLParticipantPickerSortType.FirstName) 
       controller.delegate = self 
       self.navigationController?.pushViewController(controller, animated:true); 
      } else { 
       appDelegate.log.error("Error querying for All Users: \(error)") 
      } 
     }) 

    } 

Обновление

enter image description here

+0

Просьба показать декларацию 'self.participants' – vadian

+0

@vadian изменил мой вопрос – kareem

+0

' let members' является локальной переменной и не может быть такой же, как переменная экземпляра (self) .partnersants'. Является ли тип «участников» набором объектов «PFUser»? – vadian

ответ

1

В первую очередь использовать собственные типы Swift гораздо, насколько это возможно, например, тип содержимого в NSArray объекта не определено.

Вторые всех аннотаций использование типа как можно, в случае

var array = Array(self.participants) 

без аннотации вы получите Swift Array бесплатно и компилятор знает тип содержимого, которое является PFUser. Функция sortInPlace() сортирует сам массив без возвращаемого значения, и вы принудительная обратного приведения в fullName значения String

 array.sortInPlace { 
     user1, user2 in 

     let date1 = user1["fullName"] as! String 
     let date2 = user2["fullName"] as! String 
     return date1 > date2 
} 

и использовать соответствующий тип Set<PFUser>, а затем Set<NSObject> и, вероятно, users: [PFUser]? в обработчик завершения, а затем users: NSArray?

Edit: начало метода queryForAllUsersWithCompletion должен выглядеть

UserManager.sharedManager.queryForAllUsersWithCompletion(arr as! [String], completion:{ (users: [PFUser]?, error: NSError?) in 
    if error == nil { 
     //participants declared here and passed into the participant controller 
     let participants = Set<PFUser>(array: users!) 
+0

Обновление вопроса с изменениями ur. – kareem

+0

обновил мой вопрос 'тип nsobject не имеет элементов подстроки' – kareem

+0

' arrTmp [indexPath.section] '@kareem –

Смежные вопросы