Hello,
For practice I am trying to create simple code similar something to instagram. However I am getting an error while trying to create post instance.
If I change the "let post =..." line as below, it works.
let post = Post(user: User(username: "john_doe", profileImageName: "profile_image"), imageName: "image_name", caption: "This is a great image!", timestamp: "1h", likes: 100, comments: [])
Why I can not use user instance while creating post instance?
Thanks.
import SwiftUI
struct User {
var username: String
var profileImageName: String
}
struct Post: Identifiable {
var id = UUID()
var user: User
var imageName: String
var caption: String
var timestamp: String
var likes: Int
var comments: [Comment]
}
struct Comment {
var user: User
var text: String
}
struct MyFeedView: View {
var posts: [Post]
var body: some View {
List {
ForEach(posts) { post in
VStack(alignment: .leading) {
HStack {
Image(post.user.profileImageName)
.resizable()
.frame(width: 50, height: 50)
.clipShape(Circle())
VStack(alignment: .leading) {
Text(post.user.username)
.font(.headline)
Text(post.timestamp)
.font(.subheadline)
.foregroundColor(.gray)
}
Spacer()
Button(action: {
// handle button tap
}) {
Image(systemName: "ellipsis.circle")
.font(.system(size: 20))
}
}
Image(post.imageName)
.resizable()
.aspectRatio(contentMode: .fit)
HStack {
Button(action: {
// handle like button tap
}) {
Image(systemName: "heart")
.font(.system(size: 20))
}
Button(action: {
// handle comment button tap
}) {
Image(systemName: "bubble.left")
.font(.system(size: 20))
}
Spacer()
Button(action: {
// handle share button tap
}) {
Image(systemName: "arrowshape.turn.up.left")
.font(.system(size: 20))
}
}
Text(post.caption)
.font(.body)
}
}
}
}
}
struct ContentView: View {
let user = User(username: "john_doe", profileImageName: "profile_image")
let post = Post(user: user, imageName: "image_name", caption: "This is a great image!", timestamp: "1h", likes: 100, comments: [])
var body: some View {
MyFeedView(posts: [post])
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}