import Foundation
import MobileCoreServices
func checkFileExtension(fileName: NSString){
println(fileName)
var fileExtension:CFStringRef = fileName.pathExtension
println(fileExtension)
var fileUTI:CFStringRef = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, fileExtension, nil)
println(fileUTI)
let testBool = UTTypeConformsTo(fileUTI, kUTTypeImage) != 0
if testBool{
println("image")
}
}
Run Code Online (Sandbox Code Playgroud)
我收到这个错误
错误:'Unmanaged'不能转换为'CFStringRef'
在线
var fileUTI:CFStringRef = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension,fileExtension,nil)
有任何想法吗 ??谢谢
Mik*_*e S 22
UTTypeCreatePreferredIdentifierForTag传回一个Unmanaged<CFStringRef>,所以你需要先从Unmanaged对象中获取值才能使用它:
var unmanagedFileUTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, fileExtension, nil)
var fileUTI = unmanagedFileUTI.takeRetainedValue()
Run Code Online (Sandbox Code Playgroud)
请注意,我正在调用,takeRetainedValue()因为UTTypeCreatePreferredIdentifierForTag它返回了一个我们负责释放的对象.评论takeRetainedValue()说:
获取此非托管引用的值作为托管引用,并消耗它的不平衡保留.
当函数返回非托管引用并且您知道自己负责释放结果时,这非常有用.
如果Unmanaged从一个函数中获取一个对象,并且您确定不负责释放该对象,请调用它takeUnretainedValue().
| 归档时间: |
|
| 查看次数: |
7210 次 |
| 最近记录: |