I've run into a problem saving images using iCloud. After following a few tutorials I was able to save and fetch records containing strings from iCloud but I can't figure out how to do the same with images. Here is some of my code below so that maybe someone can help me figure out what to do next. Any help is appreciated!
// saving to cloud
static func save(user: AppUser, completion: @escaping (Result<AppUser, Error>) -> ()) {
let userRecord = CKRecord(recordType: RecordType.User)
userRecord["displayName"] = user.displayName as CKRecordValue
userRecord["pfp"] = user.pfp as CKRecordValue // <-- **not sure if this is right?**
userRecord["username"] = user.username as CKRecordValue
userRecord["password"] = user.password as CKRecordValue
userRecord["bio"] = user.bio as CKRecordValue
CKContainer.default().privateCloudDatabase.save(userRecord) { (record, err) in
DispatchQueue.main.async {
if let err = err {
completion(.failure(err))
return
}
guard let record = record else {
completion(.failure(CloudFuncUserError.recordFailure))
return
}
let recordID = record.recordID
guard let displayName = record["displayName"] as? String else {
completion(.failure(CloudFuncUserError.castFailure))
return
}
guard let pfp = record["pfp"] as? CKAsset else {
completion(.failure(CloudFuncUserError.castFailure))
return
} // <-- **not sure if this is right?**
guard let username = record["username"] as? String else {
completion(.failure(CloudFuncUserError.castFailure))
return
}
guard let password = record["password"] as? String else {
completion(.failure(CloudFuncUserError.castFailure))
return
}
guard let bio = record["bio"] as? String else {
completion(.failure(CloudFuncUserError.castFailure))
return
}
let appUser = AppUser(recordID: recordID, displayName: displayName, pfp: pfp, username: username, password: password, bio: bio)
completion(.success(appUser))
}
}
}
initialization
@main
struct TestForReleaseApp: App {
var user = appUser()
var isUser = AppUser(displayName: "", pfp: CKAsset <-- (this is a placeholder, I don't know what goes here), username: "", password: "", bio: "")
var posts = Posts()
var post = Post(displayName: "", username: "", content: "", createdAt: Date(), star: 0, stared: 0, repost: 0, reposted: 0, share: 0, shared: 0, comment: 0, commented: 0, comments: [""], isPublic: 0, isPremium: 0)
var body: some Scene {
WindowGroup {
ContentView(post: post, user: isUser, appUser: user).environmentObject(user).environmentObject(posts).preferredColorScheme(.dark)
}
}
}