UPGRADE YOUR SKILLS: Learn advanced Swift and SwiftUI on Hacking with Swift+! >>

ForEach and PHFetchRequest error

Forums > SwiftUI

I'm currently working on a photos app for iOS / macOS and i'm struggeling with PhotoKit.

I did create a class where i manage all my PhotoKit requests.

class PhotosAPI: ObservableObject {

@Published var all = PHFetchResult<PHAsset>()
@Published var allAlbums = PHFetchResult<PHAssetCollection>()
@Published var allSmartAlbums = PHFetchResult<PHAssetCollection>()

// Functions to get the Collections / Assets

}

This part is working so far but now i'm struggeling with showing those data in my View.

In my View i would like to present all Assets in a List / Grid

struct ShowImages: View {

    @ObservedObject var photos = PhotosAPI()

    var body: some View {
        List(photos.all, id: \.self) { item in
            Text("\(item)")
        }
    }
}

But i do get an error "Initializer 'init(_:id:rowContent:)' requires that 'PHFetchResult<PHAsset>' conform to 'RandomAccessCollection'" and i did try all day today to fix this but i wasn't successful and i couldn't find anything useful in google.

Does anyone have an idea how i can get PHFetchResults to loop over them?

At the end i was able to show the pictures with below code. But this looks like very bad code to me. I would prefer to loop directly over the PHFetchResult

 ForEach(0..<photos.all.count) { index in
    Text("\(photos.all.object(at: index).localIdentifier)")
}                      

3      

Hacking with Swift is sponsored by Essential Developer

SPONSORED Join a FREE crash course for mid/senior iOS devs who want to achieve an expert level of technical and practical skills – it’s the fast track to being a complete senior developer! Hurry up because it'll be available only until April 28th.

Click to save your free spot now

Sponsor Hacking with Swift and reach the world's largest Swift community!

Archived topic

This topic has been closed due to inactivity, so you can't reply. Please create a new topic if you need to.

All interactions here are governed by our code of conduct.

 
Unknown user

You are not logged in

Log in or create account
 

Link copied to your pasteboard.