[SwiftUI Mater] #23 CloudKit: Images & Assets

Woozoo·2023년 4월 24일
0

[SwiftUI Review]

목록 보기
38/41
post-custom-banner

CloudKit엔 다이렉트로 이미지나 에셋을 저장할 수 없다
CKAsset으로 변환을 해줘야함

보통 Records에서 값을 가져올 때 필드 같은 밸류는 바로 다운이 되는데
CKAsset같은 밸류가 있으면 url로 넘어간다

에셋 폴더에 있는 이미지를 업로드 해봅시다

에셋 폴더에 있더라도 파일매니저로 저장을 한 다음에 그 url을 가지고

저장이 필요함

private func addItem(name: String) {
    let newFruit = CKRecord(recordType: "Fruits")
    newFruit["name"] = name
    
    
    guard
        let image = UIImage(named: "woozoobro"),
        let url = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first?.appendingPathComponent("woozoobro.png"),
        let data = image.pngData() else { return }
    
    do {
        try data.write(to: url)
        let asset = CKAsset(fileURL: url)
        newFruit["image"] = asset
        saveItem(record: newFruit)
    } catch let error {
        print(error)
    }

}

이렇게 구성을 해주는데 png로 했을 때 다운이 이상하게 되는 것 같다.
이미지를 jpg로 바꿔줌.

record 에서 파일 다운 받았을 때 이미지가 보여야하는데 제대로 안보이는 것 같다. png문제는 아녔던듯 나중에 해결해봅시다



record가 fetch될 때 프린트를 찍어봅시다


profile
우주형
post-custom-banner

0개의 댓글