반응형
LinkedIn
개발자로 성장하면서 남긴 발자취들을 확인하실 수 있습니다.
Github
WWDC Student Challenge 및 Cherish, Tiramisul 등 개발한 앱들의 코드를 확인하실 수 있습니다.
개인 앱 : Cherish
내 마음을 들여다보는 시간, 체리시는 디자이너와 PM과 함께 진행 중인 1인 개발 프로젝트입니다.
10년 후, 20년 후 나는 어떤 스토리 텔러가 되어 있을지 궁금하다. 내가 만약에 아직 조금 더 탐구하고 싶은 게 있고, 궁금한 게 있다면, 그게 설사 지금 당장의 내 인생에 도움이 안 되는 것 같더라도 경험해보자. 그 경험들을 온전히 즐기며 내 것으로 만들고, 내 일에 녹여내고... 그러다보면 그 점들이 모여 나란 사람을 그려내는 선이 될 테니까.
Recent Posts
Recent Comments
- Total
꿈꾸는리버리
[iCloudKit 시리즈 2.2] 나도 백엔드 있다 - 이미지, 비디오, 오디오 CRUD하기 본문
반응형
🌷 iCloud 시리즈 목차
4) 여러 에러나 마주했던 문제 상황들 ...
앞선 포스팅에서 이야기했던 것처럼 이 부분이 기본적으로 iCloud가 CRUD를 제공하는 타입이다.
근데 우리는 image나 audio, video를 백업할 수도 있잖아요 ?
그래서 이번 포스팅을 작성함둥..!
💕 iCloud 이미지 Create, Read
addItem에서 Image도 같이 업로드할 수 있도록 코드를 추가했다.
guard let 구문에서는 Asset에 저장되어 있는 backup_3이라는 이미지를 애플리케이션의 캐시 디렉토리에 "backup_3.png"라는 파일을 저장할 경로를 생성한다. 그리고 image를 data로 만들었다.
그리고 do catch 구문에서는 해당 url에 데이터를 넣고, 해당 파일의 url을 받아서 CKAsset의 형태로 만든다.
+) CKAsset: CloudKit에서 사용하는 데이터 타입으로, 파일(이미지, 비디오 등)을 CloudKit 데이터베이스에 저장할 때 사용
private func addItem(name: String) {
// dictionary로 작동
let newFruit = CKRecord(recordType: "Fruit")
newFruit["name"] = name
guard let image = UIImage(named: "backup_3"),
// Asset에 저장되어 있는 backup_3이라는 이미지를 애플리케이션의 캐시 디렉토리에 "backup_3.png"라는 파일을 저장할 경로를 생성
let url = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first?.appendingPathComponent("backup_3.png"),
// image를 data로 변환
let data = image.jpegData(compressionQuality: 1.0) else { return }
do {
// 해당 url에 데이터를 넣고
try data.write(to: url)
// 해당 파일의 url을 받아서 CKAsset의 형태로 만듦
let asset = CKAsset(fileURL: url)
// 그리고 이 asset을 "image" 프로퍼티로 넣음
newFruit["image"] = asset
saveItem(record: newFruit)
} catch let error {
print(error)
}
}
그리고 해당 파일을 불러올 때는 AKAsset로 불러와서 해당 url을 받은 후 사용한다.
private func fetchItems() {
...
queryOperation.recordMatchedBlock = { (returnedRecordID, returnedResult) in
switch returnedResult {
case .success(let record):
guard let name = record["name"] as? String else { return }
let imageAsset = record["image"] as? CKAsset
let imageURL = imageAsset?.fileURL
print(record)
returnedItems.append(FruitModel(name: name, imageURL: imageURL, record: record))
case .failure(let error):
print("Error: \(error)")
}
}
...
}
이렇게 저장한 Record의 image는 iCloud에서 다운을 받을 수도 있다.
이제 다음으로는 "Coredate -> iCloud로 변경하기"를 알아볼 예정입니다 ~!
반응형
'오뚝이 개발자 > SwiftUI' 카테고리의 다른 글
[iCloudKit 시리즈 4] 나도 백엔드 있다 - iCloud Noti 알아보기 (1) | 2024.10.01 |
---|---|
[iCloudKit 시리즈 3] 나도 백엔드 있다 - Coredata -> iCloud로 변경하기 (0) | 2024.10.01 |
[iCloudKit 시리즈 2.1] 나도 백엔드 있다 - iCloud CRUD 해보기 (1) | 2024.09.27 |
[iCloudKit 시리즈 1] 나도 백엔드 있다 - iCloud 세팅과 개념 그리고 유저 연결하기 (1) | 2024.09.27 |
info.plist localization string (0) | 2024.08.15 |
Comments