Реализация частной базы данных работает, как и ожидалось. Каждый из этих объектов может быть установлен как публичный или частный, используя атрибут ISPublic. Если пользователь обновляет атрибут iSpublic к True, копия списка или списка создается в общедоступной базе данных. Если пользователь устанавливает Ispublic FALSE, в списке или списке есть атрибут ISTRASHED, который установлен TRUE в общедоступной базе данных (не уверен, когда фактически удалить записи из общедоступной базы данных, но это для другого вопроса). br/> Пользователь также может просматривать все списки в общедоступной базе данных, используя nsfetchedresultscontroller для загрузки данных и для изменений монитора.
Проблема
Я могу отображать все общедоступные списки, используя UitableView и nsfetchedResultsController. У меня есть пользовательский uitableviewcell, который отображает пользователя, который создал имя пользователя ListItem и нравится как SO: < /p>
- Получите CreatorUrecordid для nsmanagedObject с использованием nspersistentContcontainer.Record (для: Для: для: для: для: для: для: для: для: для: для: для: для: для: для: record.record.record. Record. ) < /li>
Получить пользователя Ckrecord для CreatorUserRecordid с использованием ckcontainer.default (). publicclouddatabase.record (for< /li>
Доступ к имени пользователя пользователя CKRECORD
Если требуется больше информации или больше кода, дайте мне знать. < /p>
Это кажется моим лучшим вариантом это создать пользовательский пользовательский объект в моей модели Coredata, так как настройка NSPersistEntCloudKitContainer приносит мне отношения. />public func configure(listItem: ListItem, environment: Environment) {
self.listItem = listItem
self.environment = environment
self.userRecordId = self.environment?.coreDataStack.creatorUserRecordID(for: listItem)
self.fetchUserTask?.cancel()
self.fetchUserTask = Task {
guard let userRecordId = self.userRecordId,
let userRecord = try? await CKContainer.default().publicCloudDatabase.record(for: userRecordId) else {
self.userNameLabel.text = "I'm server poor. You can't view this information."
return
}
if !Task.isCancelled {
Task { @MainActor in
self.userRecord = userRecord
self.userNameLabel.text = self.userRecord?["username"]
}
}
}
self.contentTextView.text = listItem.title
self.dateCreatedLabel.text = DateFormatter.localizedString(
from: listItem.modifiedAt!,
dateStyle: .medium,
timeStyle: .short
)
let likes = self.listItem?.likes
self.likeButton.setTitle("\(likes?.count ?? 0)", for: .normal)
if let likes = likes?.allObjects as? [Like] {
for like in likes {
guard let userRecordId = self.environment?.coreDataStack.creatorUserRecordID(for: like) else {
self.likeButton.isEnabled = false
continue
}
if userRecordId.recordName == CKCurrentUserDefaultName {
self.likeButton.isEnabled = false
break
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... oruserreco