У меня есть эта строка кода в моем ContentView:
.onReceive(model2.$postsById) { postById in
ContentView.shared.mainArray.append(contentsOf: postById)
}
, которая дала мне такие данные:
[Test.PostById(id: "922f6ffc-8738-4bc2-a96d-654678540f5a", album_id: "922f6ffc-8738-4bc2-a96d-654678540f5a", name: nil, path: "public/1584045867007-71188186_249463072641040_8764351972645011456_n.jpg"), Test.PostById(id: "ffb572f9-bc40-412f-9514-e413da06da8e", album_id: "922f6ffc-8738-4bc2-a96d-654678540f5a", name: Optional("Shameless Life Wisdom Sendoff "), path: "public/1584045867009-Shameless_Life_Wisdom_Sendoff.mp3"), Test.PostById(id: "98b9bbfa-346e-4571-81a2-38afd8c5353c", album_id: "922f6ffc-8738-4bc2-a96d-654678540f5a", name: Optional("Simmering "), path: "public/1584045867657-Simmering.mp3"), Test.PostById(id: "65ccf88b-5754-4981-ab06-cf4cdc93eca8", album_id: "922f6ffc-8738-4bc2-a96d-654678540f5a", name: Optional("Skewls Owt "), path: "public/1584045867892-Skewls_Owt.mp3"), Test.PostById(id: "6b350c4d-c6b1-4679-b7d5-2c3bd33459f5", album_id: "922f6ffc-8738-4bc2-a96d-654678540f5a", name: Optional("Still Not Rite "), path: "public/1584045868127-Still_Not_Rite.mp3"), Test.PostById(id: "9ffb2c83-45ed-4198-b6ab-9a259ef91b44", album_id: "9ffb2c83-45ed-4198-b6ab-9a259ef91b44", name: nil, path: "public/1584106997200-astronomy-space-abstract-galaxy.jpg"), Test.PostById(id: "7ac7ff5f-4b4b-458f-b9a6-491813dbe97d", album_id: "9ffb2c83-45ed-4198-b6ab-9a259ef91b44", name: Optional("California Wind "), path: "public/1584106997230-California_Wind.mp3"), Test.PostById(id: "d804c511-fdd6-453c-816d-fbe501b0ba8d", album_id: "9ffb2c83-45ed-4198-b6ab-9a259ef91b44", name: Optional("Cosmic Love "), path: "public/1584106997710-Cosmic_Love.mp3"), Test.PostById(id: "094e5b65-f0b2-4a5d-8c20-c6fa3d733325", album_id: "9ffb2c83-45ed-4198-b6ab-9a259ef91b44", name: Optional("Happy Sixth "), path: "public/1584106997890-Happy_Sixth.mp3"), Test.PostById(id: "f148fd8e-6896-492b-8e5a-c99072cad562", album_id: "9ffb2c83-45ed-4198-b6ab-9a259ef91b44", name: Optional("How it Began "), path: "public/1584106998000-How_it_Began.mp3"), Test.PostById(id: "7c35e1ee-28e0-4845-bd14-dcad27025b04", album_id: "7c35e1ee-28e0-4845-bd14-dcad27025b04", name: nil, path: "public/1584039156755-add.png"), Test.PostById(id: "c311604f-0bfc-4930-bfdf-fcf5592483b9", album_id: "7c35e1ee-28e0-4845-bd14-dcad27025b04", name: Optional("A Typical Ride Out "), path: "public/1584039156755-A_Typical_Ride_Out.mp3"), Test.PostById(id: "984857d1-5d39-4e66-9379-e8346f7e5b43", album_id: "7c35e1ee-28e0-4845-bd14-dcad27025b04", name: Optional("Because For Everything There Is Someone "), path: "public/1584039156941-Because_For_Everything_There_Is_Someone.mp3"), Test.PostById(id: "1919b016-6a6e-4793-8305-71207d9518ae", album_id: "7c35e1ee-28e0-4845-bd14-dcad27025b04", name: Optional("California Wind "), path: "public/1584039157156-California_Wind.mp3"), Test.PostById(id: "45ef0279-6179-43b3-8a45-7a0fb4acefd5", album_id: "45ef0279-6179-43b3-8a45-7a0fb4acefd5", name: nil, path: "public/1584040897839-smiley.png"), Test.PostById(id: "4897093c-7b7b-4e1b-b757-6d11cd56f0c2", album_id: "45ef0279-6179-43b3-8a45-7a0fb4acefd5", name: Optional("California Wind "), path: "public/1584040897843-California_Wind.mp3"), Test.PostById(id: "a74de5c6-6161-45c4-add8-d530eabcb8f0", album_id: "45ef0279-6179-43b3-8a45-7a0fb4acefd5", name: Optional("Cosmic Love "), path: "public/1584040898074-Cosmic_Love.mp3"), Test.PostById(id: "b74233f6-ae11-42e9-89d4-94fec754e46b", album_id: "45ef0279-6179-43b3-8a45-7a0fb4acefd5", name: Optional("Happy Sixth "), path: "public/1584040898205-Happy_Sixth.mp3"), Test.PostById(id: "7f297fd6-e8d3-4e64-82c8-464fed40e196", album_id: "45ef0279-6179-43b3-8a45-7a0fb4acefd5", name: Optional("How it Began "), path: "public/1584040898289-How_it_Began.mp3"), Test.PostById(id: "0ccadf9b-3ca9-4528-ae4f-c4a646e04075", album_id: "45ef0279-6179-43b3-8a45-7a0fb4acefd5", name: Optional("It Doesnt Need To Be More Than That "), path: "public/1584040898397-It_Doesnt_Need_To_Be_More_Than_That.mp3"), Test.PostById(id: "57e19ce4-ef2e-499e-aa76-b3e32ff80b4e", album_id: "57e19ce4-ef2e-499e-aa76-b3e32ff80b4e", name: nil, path: "public/1584038190074-audioplayer.jpg"), Test.PostById(id: "9201b562-d5d9-4e6f-8b21-4c3f691b62ee", album_id: "57e19ce4-ef2e-499e-aa76-b3e32ff80b4e", name: Optional("Happy Sixth "), path: "public/1584038190075-Happy_Sixth.mp3"), Test.PostById(id: "f3ca3cb8-7670-4e0b-87b3-80f8a2d3d96f", album_id: "57e19ce4-ef2e-499e-aa76-b3e32ff80b4e", name: Optional("How it Began "), path: "public/1584038190273-How_it_Began.mp3"), Test.PostById(id: "63c58525-3115-4882-b280-66c675c64ded", album_id: "57e19ce4-ef2e-499e-aa76-b3e32ff80b4e", name: Optional("It Doesnt Need To Be More Than That "), path: "public/1584038190375-It_Doesnt_Need_To_Be_More_Than_That.mp3"), Test.PostById(id: "af5c2f62-fa97-4736-a003-cd876324d28c", album_id: "57e19ce4-ef2e-499e-aa76-b3e32ff80b4e", name: Optional("Kindergarden "), path: "public/1584038190484-Kindergarden.mp3"), Test.PostById(id: "01740eb2-fa9d-4ae7-b44f-1940e7614b0e", album_id: "01740eb2-fa9d-4ae7-b44f-1940e7614b0e", name: nil, path: "public/1584034807454-add.png"), Test.PostById(id: "929bc18a-f60e-4422-8ba0-4dcea80337f3", album_id: "01740eb2-fa9d-4ae7-b44f-1940e7614b0e", name: Optional("Because For Everything There Is Someone "), path: "public/1584034807455-Because_For_Everything_There_Is_Someone.mp3"), Test.PostById(id: "a312ae0f-f2e9-4d10-8817-9782497d4206", album_id: "01740eb2-fa9d-4ae7-b44f-1940e7614b0e", name: Optional("California Wind "), path: "public/1584034807651-California_Wind.mp3"), Test.PostById(id: "2369614e-8431-432c-917d-8208d1ac0a05", album_id: "01740eb2-fa9d-4ae7-b44f-1940e7614b0e", name: Optional("Cosmic Love "), path: "public/1584034808056-Cosmic_Love.mp3"), Test.PostById(id: "0c40b732-7173-44c9-b183-6b0a77f481ae", album_id: "0c40b732-7173-44c9-b183-6b0a77f481ae", name: nil, path: "public/1584032744268-Screen Shot 2020-01-21 at 11.55.48 AM.png"), Test.PostById(id: "eea069f2-df72-462f-853d-25af33f4812c", album_id: "0c40b732-7173-44c9-b183-6b0a77f481ae", name: Optional("Kindergarden "), path: "public/1584032744268-Kindergarden.mp3"), Test.PostById(id: "4a13a1cf-4f9e-4ba0-b67e-3a77d0290c8d", album_id: "0c40b732-7173-44c9-b183-6b0a77f481ae", name: Optional("Lulu Is the Cat I Like Best (1) "), path: "public/1584032744426-Lulu_Is_the_Cat_I_Like_Best (1).mp3"), Test.PostById(id: "4f5d4390-e179-4bce-8cb0-a074fc958653", album_id: "0c40b732-7173-44c9-b183-6b0a77f481ae", name: Optional("Lulu Is the Cat I Like Best "), path: "public/1584032744541-Lulu_Is_the_Cat_I_Like_Best.mp3"), Test.PostById(id: "dbe3a0be-73ea-4f22-add4-71ab62605103", album_id: "0c40b732-7173-44c9-b183-6b0a77f481ae", name: Optional("Lust "), path: "public/1584032744605-Lust.mp3"), Test.PostById(id: "02173d09-cbb2-4656-82fb-a3e50b0f8277", album_id: "02173d09-cbb2-4656-82fb-a3e50b0f8277", name: nil, path: "public/1584032681655-Screen Shot 2020-01-25 at 2.40.31 PM.png"), Test.PostById(id: "891eb2e3-5578-497f-9c9e-806c185fd8f3", album_id: "02173d09-cbb2-4656-82fb-a3e50b0f8277", name: Optional("A Typical Ride Out "), path: "public/1584032681656-A_Typical_Ride_Out.mp3")
... плюс еще
Какие Я использую в своем struct Album
в списке, как это:
struct Album: View {
var post:Post
init(post: Post) {
self.post = post
print("MainArray \(ContentView.shared.mainArray)")
}
var body: some View {
VStack {
Text("Title: ").bold()
+ Text("\(post.title)")
ImageView(withURL: "http://localhost:8000/\(post.path.replacingOccurrences(of: " ", with: "%20"))")
Text("Description: ").bold()
+ Text("\(post.description)")
List(ContentView.shared.mainArray.filter { i in i.album_id == post.id && i.id != post.id
}) { post in
Text("\(post.name ?? "title")")
}
}
}
, который фильтрует мои песни по album_id
Как вы можете видеть из моих данных, у меня есть key
, называемый path:
для каждой из песен. Как сделать так, чтобы при нажатии на элемент списка он воспроизводил звук, используя мой путь (Дополнительно: а также проигрыватель для остановки и приостановки этих звуков)