如何解包 UInt32?在 Swift?
How to unwrap UInt32? in Swift?
我正在为一些非常简单的事情而苦苦挣扎,而且我不知道发生了什么。对了,是Swift1.2,不过我觉得不是特例!
我有一个 UInt32?
变量,我需要获取值,但使用 !
会引发错误:fatal error: unexpectedly found nil while unwrapping an Optional value
。不,我知道这不是零。
static func checkBitrate(filePath: String) -> Bool {
let audioURL = NSURL.fileURLWithPath(filePath)
var audioFile : AudioFileID = nil
var theErr: OSStatus? = nil
let hint: AudioFileTypeID = 0
theErr = AudioFileOpenURL(audioURL, Int8(kAudioFileReadPermission), hint, &audioFile)
if (theErr != OSStatus(noErr)) {
return false
}
var outDataSize: UInt32 = 0
var isWritable: UInt32 = 0
theErr = AudioFileGetPropertyInfo(audioFile, UInt32(kAudioFilePropertyBitRate), &outDataSize, &isWritable)
if (theErr != OSStatus(noErr)) {
return false
}
var bitrate: UInt32? = nil
theErr = AudioFileGetProperty(audioFile, UInt32(kAudioFilePropertyBitRate), &outDataSize, &bitrate)
if (theErr != OSStatus(noErr)) {
return false
}
println("Bitrate value: \(bitrate)")
let br = bitrate!
//return br == 192000
return false
}
在第 let br = bitrate!
行抛出错误。
我有点迷茫,我做错了什么?
你只需要初始化你的变量
var bitrate: UInt32 = 0
我正在为一些非常简单的事情而苦苦挣扎,而且我不知道发生了什么。对了,是Swift1.2,不过我觉得不是特例!
我有一个 UInt32?
变量,我需要获取值,但使用 !
会引发错误:fatal error: unexpectedly found nil while unwrapping an Optional value
。不,我知道这不是零。
static func checkBitrate(filePath: String) -> Bool {
let audioURL = NSURL.fileURLWithPath(filePath)
var audioFile : AudioFileID = nil
var theErr: OSStatus? = nil
let hint: AudioFileTypeID = 0
theErr = AudioFileOpenURL(audioURL, Int8(kAudioFileReadPermission), hint, &audioFile)
if (theErr != OSStatus(noErr)) {
return false
}
var outDataSize: UInt32 = 0
var isWritable: UInt32 = 0
theErr = AudioFileGetPropertyInfo(audioFile, UInt32(kAudioFilePropertyBitRate), &outDataSize, &isWritable)
if (theErr != OSStatus(noErr)) {
return false
}
var bitrate: UInt32? = nil
theErr = AudioFileGetProperty(audioFile, UInt32(kAudioFilePropertyBitRate), &outDataSize, &bitrate)
if (theErr != OSStatus(noErr)) {
return false
}
println("Bitrate value: \(bitrate)")
let br = bitrate!
//return br == 192000
return false
}
在第 let br = bitrate!
行抛出错误。
我有点迷茫,我做错了什么?
你只需要初始化你的变量
var bitrate: UInt32 = 0