아래와 같이 cloudserver에서 이미지를 가져 오려고하는 swift 및 cloudkit을 사용하고 있습니다. "조건부 바인딩의 초기화 프로그램에 선택 유형이 CKAsset이 아니어야합니다"라는 줄이 있습니다. if ckAsset = image { 도와주세요.조건부 바인딩의 초기화에 오류가 발생하는 경우 선택적 유형이 있어야하며, 이유는 무엇입니까?
let ckRecord = Saveddata[indexPath.row]
weak var weakCell = cell
backgroundQueue.addOperation {
let image = ckRecord.object(forKey: "Photos")
// Conditionally cast image resource
if let ckAsset = image as? CKAsset {
// This isn't optional, no protection needed
let url = ckAsset.fileURL
// Data(contentsOf:...) will throw on failure
do {
// Fetch the image data (try because it can fail and will throw if it does)
let imagedata = try Data(contentsOf: url)
OperationQueue.main.addOperation() {
weakCell?.imageView?.image = UIImage(data: imagedata)
}
}
catch {
// handle data fetch error
}
}
}
그것은 조건부 CKAsset
으로 자원을 캐스팅 만 실제로 한 경우 진행 : 신속 새로운 이것은 내 첫 번째 응용 프로그램
let ckRecord = Saveddata[indexPath.row]
weak var weakCell = cell
backgroundQueue.addOperation {
let image = ckRecord.object(forKey: "Photos") as! CKAsset
if let ckAsset = image {
if let URL = ckAsset.fileURL {
let imagedata = NSData(contentsOf: URL)
OperationQueue.main.addOperation() {
cell.imageView?.image = UIImage(data: imagedata! as Data)
}
}
}
'if let'을 사용할 때마다'='의 오른손은 * 선택적 *이어야합니다. 그러나 '이미지'는 선택 사항이 아닙니다. 왜냐하면 : 이전에 당신이 강제로 unwrapped 이미지를'as! CKAsset' – Honey
그래서 HOw는 강제로 이미지를 강제로 같은 논리를 실행할 수 있습니다 CKAsset – rania
만약 당신이 그 오류가 발생하면 : '만약 let'을 사용하지 마십시오. 그냥'let'을 사용하십시오. 강제 감싸기 대신'guard '를 사용하는 것이 가장 좋습니다. – Honey