什么是 Swift 中的桥接转换?“桥接”是什么意思?
我在以下代码中收到警告,我在其中标记了“//警告”的注释:
import UIKit
import CloudKit
let int: UInt8 = 1
let data: Data? = Data([int])
let record: CKRecord = CKRecord(recordType: "record_type")
record.setObject(data as? CKRecordValue, forKey: "field") // warning
警告说:
来自“数据?”的有条件的沮丧 到“CKRecordValue”(又名“__CKRecordObjCValue”)是一种桥接转换;你的意思是用'as'吗?
我也有使用桥接转换的代码:
import Foundation
import CoreData
extension Vision {
@nonobjc public class func fetchRequest() -> NSFetchRequest<Vision> {
return NSFetchRequest<Vision>(entityName: "Vision")
}
@NSManaged public var media: NSObject?
}
private var privateEntityInstance: Vision
private var privateMedia: Data? = nil
privateEntityInstance.media = privateMedia as NSObject?
其中 privateEntityInstance.media 是可选的,privateMedia 也是可选的。该代码是否有效,以便 CoreData 将保存媒体属性的适当值,无论它是 NSObject 还是 nil?