Относительно новый кодер здесь ... будьте осторожны.
Мои записи хранятся на CloudKit; Я вижу их в приборной панели. Но у меня возникают проблемы с извлечением их при загрузке приложения.
func fetchPosts(completion: @escaping (Result<[Post], PostError>) -> Void) {
let predicate = NSPredicate(value: true)
let query = CKQuery(recordType: PostStrings.recordTypeKey, predicate: predicate)
publicDB.perform(query, inZoneWith: nil) { (records, error) in
if let error = error {
return completion(.failure(.ckError(error)))
}
guard let records = records else { return completion(.failure((.noRecord)))}
let posts = records.compactMap { Post(record: $0) }
self.posts = posts
print("Fetched posts.")
completion(.success(posts))
}
}
![enter image description here](https://i.stack.imgur.com/Wptk6.png)
Как видите, из Облако, но это не присваивает его массиву моих сообщений.
Спасибо за ваше время ~
РЕДАКТИРОВАТЬ: И это становится страннее ...
func createPostWith(title: String, opComment: AVURLAsset, photo: UIImage, completion: @escaping (Result<Post?, PostError>) -> Void) {
guard let currentUser = UserController.sharedInstance.currentUser else { return completion(.failure(.noUserLoggedIn)) }
let userReference = CKRecord.Reference(recordID: currentUser.recordID, action: .deleteSelf)
let post = Post(title: title, opComment: opComment, userReference: userReference, postPhoto: photo)
self.posts.append(post)
let postRecord = CKRecord(post: post)
publicDB.save(postRecord) { (record, error) in
if let error = error {
return completion(.failure(.ckError(error)))
}
guard let record = record, let post = Post(record: record) else {return completion(.failure(.noPost))}
print("Saved Post: \(record.recordID.recordName)")
completion(.success(post))
}
}
Когда я сохраняю сообщение, оно никогда не печатает "Сохраненный пост" на консоли, но оно сохраняет в облако. Как будто сообщение теряет свою ценность после PublicDB.save.
Есть идеи?