UnsafeMutablePointer‹Void› на [NSObject: AnyObject]

Я переопределяю метод mouseEntered(theEvent: NSEvent) NSResponder и хочу получить значение, которое я установил при создании NSTrackingArea в Swift. Я использую этот конструктор для создания NSTrackingArea и передачи следующего объекта как userInfo.

let trackerData = ["myTrackerKey": view]
let trackingArea = NSTrackingArea(rect: trackingRect, options: [.EnabledDuringMouseDrag, .MouseEnteredAndExited, .ActiveInActiveApp], owner: self, userInfo: trackerData)

(view : NSView и trackingRect : NSRect существуют)

Я устанавливаю trackerData как userInfo, чтобы я мог прочитать его позже в mouseEntered(theEvent: NSEvent).

override func mouseEntered(theEvent: NSEvent) {
    // This does not work
    let data1 = theEvent.userData as [NSObject : AnyObject]
    let data2 = theEvent.userData as [String : NSView]
    let data3 = theEvent.userData as NSDictionary
}

Мой код основан на этом примере кода Objective-C предоставлено Apple. Чтобы процитировать строку 372 из SuggestionsWindowController.m:

HighlightingView *view = [(NSDictionary*)[event userData] objectForKey: kTrackerKey];

Итак, как я могу прочитать userData события?

Я просмотрел эти вопросы и ответы по StackOverflow, но это не работает.

введите здесь описание изображения


person RHB    schedule 19.07.2015    source источник


Ответы (1)


Если вы хотите прочитать trackerData из события, вы должны получить информацию о пользователе из области отслеживания.

if let userInfo = theEvent.trackingArea?.userInfo {
  let trackerData = userInfo["myTrackerKey"]! as! NSView
  // do something with the view
}
person vadian    schedule 19.07.2015