Преобразование [NSNumber numberWithUnsignedInt:kCVPixelFormatType_32BGRA], (id)kCVPixelBufferPixelFormatTypeKey, nil]; Свифт
Получение ошибки здесь. Стойка моего мозга. Перепробовал всевозможные комбинации.
Не удается найти инициализатор для типа 'NSDictionary', который принимает список аргументов типа '(object:(Int), forKey: CFString!)'
// configure the pixel format - Obj-C
// videoOutput.videoSettings = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithUnsignedInt:kCVPixelFormatType_32BGRA], (id)kCVPixelBufferPixelFormatTypeKey, nil];
// Swift
videoOutput.videoSettings = NSDictionary(object: Int(kCVPixelFormatType_32BGRA), forKey:kCVPixelBufferPixelFormatTypeKey)
3 ответа
Обновление: Xcode 7.0 • Swift 2.0
videoOutput.videoSettings = NSDictionary(object: Int(kCVPixelFormatType_32BGRA), forKey: kCVPixelBufferPixelFormatTypeKey as String) as [NSObject : AnyObject]
или просто
videoOutput.videoSettings = [kCVPixelBufferPixelFormatTypeKey : Int(kCVPixelFormatType_32BGRA)]
Это было изменено в Swift 4.x, для меня работает следующее:
captureVideoDataOutput.videoSettings =
[kCVPixelBufferPixelFormatTypeKey as String : kCVPixelFormatType_32BGRA]
Похоже, тип будет [String: Int]
,
На самом деле, просматривая документы Xcode, он говорит, что значение может быть либо одним числом, либо массивом. Если это массив, то тип будет [String: [Int]]
,
Таким образом, вы должны быть в состоянии сказать:
let aVideoSetting: [String: Int] =
[kCVPixelBufferPixelFormatTypeKey: kCVPixelFormatType_32BGRA] videoOutput.videoSettings = aVideoSetting
Я все еще не на 100% совместим с типами какао и типами Swift, так что это может быть не идеально, но это близко.
Вы также можете переписать свой код для создания NSDictonary в быстром синтаксисе:
let aPixelFormat = NSNumber(int: kCVPixelFormatType_32BGRA)
let settingsDict = NSDictionary(aPixelFormat
forKey: "numberWithUnsignedInt:kCVPixelFormatType_32BGRA")