[英]Type 'AnyObject' does not conform to protocol 'Hashable'
我正在將現有的Objective-C項目轉換為Swift。 我正在轉換一個函數,我得到上述錯誤。 請檢查以下代碼。
Objective-C的
- (IBAction)accessoryButtonTapped:(id)sender event:(id)event
{
NSSet *touches = [event allTouches];
UITouch *touch = [touches anyObject];
CGPoint currentTouchPosition = [touch locationInView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint: currentTouchPosition];
if (indexPath != nil) {
[self tableView: self.tableView accessoryButtonTappedForRowWithIndexPath: indexPath];
}
}
這是快捷的代碼。
@IBAction func accessoryButtonTapped(sender: AnyObject, event: AnyObject) {
let touches: Set<AnyObject> = event.allTouches()! // I am getting the ERROR here
let touch: UITouch = touches.first!
let currentTouchPosition: CGPoint = touch.locationInView(self.tableView)
let indexPath: NSIndexPath = self.tableView.indexPathForRowAtPoint(currentTouchPosition)!
self.tableView(self.tableView, accessoryButtonTappedForRowWithIndexPath: indexPath)
}
誰能告訴我我在做什么呢?
allTouches()函數不返回Set of AnyObject。 它返回一組UITouch對象。 請查看文檔。 這是正確的代碼。
@IBAction func accessoryButtonTapped(sender: AnyObject, event: AnyObject) {
let touches: Set<UITouch> = event.allTouches()!
let touch: UITouch = touches.first!
let currentTouchPosition: CGPoint = touch.locationInView(self.tableView)
let indexPath: NSIndexPath = self.tableView.indexPathForRowAtPoint(currentTouchPosition)!
self.tableView(self.tableView, accessoryButtonTappedForRowWithIndexPath: indexPath)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.