gpt4 book ai didi

ios - 命令因信号故障而失败 - Swift 2.2 Xcode 7.3

转载 作者:行者123 更新时间:2023-11-29 01:06:57 27 4
gpt4 key购买 nike

在更新到 xcode 7.3 后,我正在更新我所有的 swift 语法在此过程中,我遇到了一些关于 ambiguous use of subscript swift 的错误,我相信这个错误也是导致 Signal Fault 的原因。

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
}

编辑

participants 的声明来自这里的另一个 Controller :

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

最佳答案

首先尽可能使用Swift原生类型a,例如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?

编辑: 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!)

关于ios - 命令因信号故障而失败 - Swift 2.2 Xcode 7.3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36258298/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com