又名 'NSString' 没有成员 - 斯威夫特
Posted
技术标签:
【中文标题】又名 \'NSString\' 没有成员 - 斯威夫特【英文标题】:aka 'NSString' has no member - Swift又名 'NSString' 没有成员 - 斯威夫特 【发布时间】:2018-01-28 21:36:53 【问题描述】:我正在使用 Swift 4 构建一个二维码阅读器,但遇到了一些问题,尤其是这些多行消息:
类型“AVMediaType”(又名“NSString”)没有成员“视频”
类型“AVMetadataObject.ObjectType”(又名“NSString”)没有成员“qr”
类型“AVLayerVideoGravity”(又名“NSString”)没有成员没有成员“resizeAspectFill”
但是,the sample project I've been following 使用与我相同的代码完美构建。
这是我的代码第一部分的示例:
import UIKit
import AVFoundation
@available(ios 10.0, *)
class ScanViewController: UIViewController
var captureSession = AVCaptureSession?.self
var videoPreviewLayer: AVCaptureVideoPreviewLayer?
@IBOutlet weak var previewView: UIView!
override func viewDidLoad()
super.viewDidLoad()
// Get the back-facing camera for capturing videos
//***ERROR OCCURRS ON THIS LINE***
let deviceDiscoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInDualCamera], mediaType: AVMediaType.video, position: .back)
guard let captureDevice = deviceDiscoverySession.devices.first else
print("Failed to get the camera device")
return
有谁知道是什么原因造成的以及如何解决?
【问题讨论】:
从您的代码中删除@available(iOS 10.0, *)
并更改您在 IB 和捕获设备中的部署目标 AVCaptureDevice.default(for: .video)
@LeoDabus 您是否建议用它替换以“let deviceDiscoverySession”开头的整行?
是的,只需获取默认相机。我也会选择一个更好的命名do guard let captureDevice = AVCaptureDevice.default(for: .video), case let input = try AVCaptureDeviceInput(device: captureDevice) else return // code ... catch print(error) return
看起来不错,但您能澄清一下“更改 IB 中的部署目标”是什么意思吗?留下完整的答案,以便我将其标记为正确!
dropbox.com/s/l7y4h3qjatledh1/…
【参考方案1】:
修好了!
解决方案不是video
是AVMediaType
的属性,AVMediaTypeVideo
是它自己的东西。在 iOS 10.2 及更高版本中将其用于 Swift 4。
【讨论】:
【参考方案2】:您的部署目标类似于iOS 10.0
。 AVMediaType
和 AVLayerVideoGravity
可从 iOS 11
获得。您应该增加您的部署目标或使用较旧的替代方案,例如 AVMediaTypeVideo
【讨论】:
【参考方案3】:针对 Swift 4.x 进行如下修复
改变
AVMediaType.video
到
AVMediaTypeVideo
【讨论】:
以上是关于又名 'NSString' 没有成员 - 斯威夫特的主要内容,如果未能解决你的问题,请参考以下文章
类型“UIPageViewController.OptionsKey”(又名“NSString”)没有成员“interPageSpacing”
如何修复:无法将“CLLocationDegrees”(又名“Double”)类型的值分配给“Float!”在斯威夫特 3
斯威夫特:'(字符串)-> AnyObject?没有名为“下标”的成员