CloudKit fetch не назначает записи в массив - PullRequest
0 голосов
/ 22 апреля 2020

Относительно новый кодер здесь ... будьте осторожны.

Мои записи хранятся на 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

Как видите, из Облако, но это не присваивает его массиву моих сообщений.

Спасибо за ваше время ~

РЕДАКТИРОВАТЬ: И это становится страннее ...

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.

Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...