Выпуск CoreData 1-многие и 1 для многих - PullRequest
0 голосов
/ 22 декабря 2018

У меня есть 3 объекта (Пользователь, Альбом и Фото) со следующими атрибутами.enter image description here Я не могу прочитать данные из фотографии (альбом 1: <- >> много фотографий).Вот как я сохраняю свои данные

var managedContext: NSManagedObjectContext!
    var currentUser: User!
    @IBAction func saveButtonTapped(_ sender: Any) {
            let album = Album(context: managedContext)
            album.albumMainPhoto = photoArray[0].jpegData(compressionQuality: 1.0) as! NSData
            album.albumDescription = photoDescriptionArray[0]
            album.numberOfPhotos = Int16(photoArray.count)
            let photos = Photo(context: managedContext)
            photos.colorAsHex = "hexTest"
            photos.photo = photoArray[0].jpegData(compressionQuality: 1.0) as! NSData
            photos.photoDescription = "descTest"
            photos.photoStyle = "styleTest"

            album.addToAlbumToPhotos(photos)
            currentUser?.addToUserToAlbum(album)
            do {
                try managedContext.save()
            } catch let error as NSError {
                print("save error: \(error), description: \(error.userInfo)")
            }
            dismiss(animated: true, completion: nil)
        }

и извлекаю данные этим

guard let album = currentUser?.userToAlbum?[indexPath.row] as? Album,
            let albumTitle = album.albumDescription as String?,
            let albumPhotosCount = album.numberOfPhotos as Int16?,
            let albumMainPhoto = album.albumMainPhoto as NSData? else {
                return
        }

        guard let photos = Albums?.albumToPhotos?[indexPath.row] as? Photo,
            let photodesc = photos.photoDescription as String?,
            let photoImage = photos.photo as NSData?
            else {
                return
        }

Первый вариант (сторожить альбом) работает отлично, я не могу прочитать albumDescription, numberOfPhotos и увидетьфотоальбомКогда я пытаюсь использовать это на фотографиях, он не может прочитать данные.Я все еще новичок в coreData, поэтому могу сделать что-то не так.

1 Ответ

0 голосов
/ 22 декабря 2018

Мне удалось получить данные с помощью:

guard let album = currentUser?.userToAlbum?[indexPath.row] as? Album,
            let albumTitle = album.albumDescription as String?,
            let albumPhotosCount = album.numberOfPhotos as Int16?,
            let albumMainPhoto = album.albumMainPhoto as NSData?,
            let photos = album.albumToPhotos?[indexPath.row] as? Photo,
            let photosDes = photos.photoDescription as String?
            else {
                return
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...