ios - CoreData 关系 1-多和 1 对多

标签 ios swift xcode core-data

我有 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
        }

第一个选项(guard let album)效果很好,我无法读取albumDescription、numberOfPhotos 并查看图像albumMainPhoto。当我尝试在照片上使用它时,它无法读取数据。我对 coreData 还很陌生,所以我可能会做错什么。

最佳答案

我能够用这个获取数据:

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
        }

关于ios - CoreData 关系 1-多和 1 对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53894503/

相关文章:

iPhone 类似谷歌地图应用的半透明状态栏

xcode - 一段时间后删除 SKLabel

objective-c - 将值传递给属性的正确方法是什么?

ios - tableView 单元格内的 PickerView

ios - 在具有多个部分的 tableView 中滚动时,使用流畅的动画更改 View 背景渐变颜色

ios - 为什么 UIBarButtonItems 最小尺寸时宽度为 0

ios - 我应该始终为我的模型使用 Core Data 吗?

ios - 无法使用 Swift 连接 RabbitMQ

ios - 如何以编程方式更新约束?

ios - 尝试在 tableView :editActionsForRowAt: 中设置带有图像的按钮