Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
b264f0d
jekyll collection
valeIT Oct 19, 2019
9bdd7e7
update
valeIT Oct 19, 2019
882d720
Merge branch 'master' into jekyll-collection
valeIT Oct 26, 2019
57c7d75
Update and rename 2019-10-22-Using-Jekyll-Collections-To-Setup-A-Book…
valeIT Oct 28, 2019
9fc9b5b
Merge branch 'master' into jekyll-collection
repo-ranger[bot] Oct 28, 2019
391da60
Merge branch 'master' into jekyll-collection
repo-ranger[bot] Oct 28, 2019
3cafca3
Merge branch 'master' into jekyll-collection
repo-ranger[bot] Oct 28, 2019
d6678f0
Merge branch 'master' into jekyll-collection
repo-ranger[bot] Oct 28, 2019
e51e0ff
Merge branch 'master' into jekyll-collection
valeIT Oct 31, 2019
0a535fa
Merge branch 'master' into jekyll-collection
repo-ranger[bot] Oct 31, 2019
c39ac65
Merge branch 'master' into jekyll-collection
repo-ranger[bot] Oct 31, 2019
46e7792
Merge branch 'master' into jekyll-collection
repo-ranger[bot] Oct 31, 2019
ca01e06
Update 2019-10-31-Using-Jekyll-Collections-To-Setup-A-Book-Page.md
valeIT Nov 19, 2019
865588e
Merge branch 'master' into jekyll-collection
repo-ranger[bot] Nov 19, 2019
f444e91
add description
valeIT Nov 21, 2019
4b84a83
Merge branch 'master' into jekyll-collection
repo-ranger[bot] Nov 21, 2019
f5c37dd
update articles
valeIT Nov 21, 2019
f5d8409
Merge branch 'jekyll-collection' of github.com:valeIT/valeIT.github.i…
valeIT Nov 21, 2019
6affc2d
Merge branch 'master' into jekyll-collection
repo-ranger[bot] Nov 21, 2019
5006fa8
Merge branch 'master' into jekyll-collection
valeIT Nov 27, 2019
45c3484
Merge branch 'master' into jekyll-collection
repo-ranger[bot] Nov 27, 2019
01df8a9
Update 2019-10-07-Best-Of.md
valeIT Dec 3, 2019
1826ef2
Update 2019-10-31-Using-Jekyll-Collections-To-Setup-A-Book-Page.md
valeIT Dec 3, 2019
b61e603
Rename 2019-10-31-Using-Jekyll-Collections-To-Setup-A-Book-Page.md to…
valeIT Dec 3, 2019
06ce7b1
Merge branch 'master' into jekyll-collection
repo-ranger[bot] Dec 3, 2019
cf91a04
Merge branch 'master' into jekyll-collection
repo-ranger[bot] Dec 3, 2019
6034ee3
Update bestof_books.json
valeIT Dec 22, 2019
68524bb
Update bestof_blogs.json
valeIT Dec 22, 2019
8e373ec
Merge branch 'master' into jekyll-collection
repo-ranger[bot] Dec 22, 2019
6f583c9
Update bestof_movies.json
valeIT Dec 22, 2019
a4df947
Update bestof_tvseries.json
valeIT Dec 22, 2019
70a09f0
Update bestof_podcasts.json
valeIT Dec 22, 2019
e55c442
Update bestof_videoGames.json
valeIT Dec 22, 2019
e282e23
Update bestof_books.json
valeIT Dec 22, 2019
00c7ae2
Merge branch 'master' into jekyll-collection
repo-ranger[bot] Dec 22, 2019
9a682a9
Update bestof_tvseries.json
valeIT Dec 22, 2019
cddab3c
Update bestof_tvseries.json
valeIT Dec 23, 2019
aae5a84
Update bestof_subreddits.json
valeIT Dec 23, 2019
e9899fd
Update bestof_youtube.json
valeIT Dec 23, 2019
88a9a83
Update bestof_subreddits.json
valeIT Dec 23, 2019
3068519
Update 2019-12-22-Using-Jekyll-Collections-To-Setup-A-Book-Page.md
valeIT Dec 25, 2019
c4a691f
Update bestof_books.json
valeIT Dec 25, 2019
969c567
Merge branch 'master' into jekyll-collection
repo-ranger[bot] Dec 25, 2019
d685127
Update bestof_subreddits.json
valeIT Dec 25, 2019
2c54b4d
Update bestof_videoGames.json
valeIT Dec 25, 2019
4b0920d
Update bestof_movies.json
valeIT Dec 25, 2019
3906f98
Update bestof_youtube.json
valeIT Dec 25, 2019
0d0adef
Update bestof_youtube.json
valeIT Dec 25, 2019
f888ab5
Merge branch 'master' into jekyll-collection
valeIT Mar 12, 2023
f2ce9e4
Merge branch 'master' into jekyll-collection
repo-ranger[bot] Mar 12, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 31 additions & 4 deletions _data/bestof_articles.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,35 @@
{
"title": "Best Articles I've Written",
"description": "The articles I prefer the most for the ones I've written on my blog.",
"content": [{
"title": "Still Empty",
"description": "",
"id": "StillEmpty"
}]
"title": "Unity Rotate Around",
"description": "",
"url": "/unity-rotate-around",
"id": "unity-rotate-around"
},
{
"title": "Free My Desktop",
"description": "",
"url": "/Free-my-desktop-mac-app",
"id": "Free-my-desktop-mac-app"
},
{
"title": "Unity Tilemap Procedural Generation",
"description": "",
"url": "/unity-tilemaps-and-procedural-generation",
"id": "unity-tilemaps-and-procedural-generation"
},
{
"title": "Android Kiosk App",
"description": "",
"url": "/Android-Kiosk-App",
"id": "Android-Kiosk-App"
},
{
"title": "Reactive Data Streams Using SwiftUI And Combine",
"description": "",
"url": "/Reactive-Data-Streams-Using-Swift-UI-And-Combine",
"id": "Reactive-Data-Streams-Using-Swift-UI-And-Combine"
}
]
}
10 changes: 6 additions & 4 deletions _data/bestof_blogs.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
{
"title": "Best Blogs",
"description": "",
"content": [{
"title": "Still Empty",
"title": "Swift By Sundell",
"description": "",
"id": "StillEmpty"
}]
}
"id": "SwiftBySundell"
}
]
}
35 changes: 31 additions & 4 deletions _data/bestof_books.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,35 @@
{
"title": "Best Books",
"description": "",
"content": [{
"title": "Still Empty",
"title": "Oathbringer by Brandon Sanderson",
"description": "",
"id": "StillEmpty"
}]
}
"id": "Oathbringer"
},
{
"title": "Mistborn by Brandon Sanderson",
"description": "",
"id": "Mistborn"
},
{
"title": "A Dance With Dragons by George R R Martin",
"description": "",
"id": "ADanceWithDragons"
},
{
"title": "Lord Of The Rings by J R R Tolkien",
"description": "",
"id": "LordOfTheRings"
},
{
"title": "Mass Effect by Drew Karpyshyn",
"description": "",
"id": "MassEffect"
},
{
"title": "Shannara by Terry Brooks",
"description": "",
"id": "Shannara"
}
]
}
1 change: 1 addition & 0 deletions _data/bestof_courses.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"title": "Best Courses",
"description": "",
"content": [{
"title": "Still Empty",
"description": "",
Expand Down
23 changes: 20 additions & 3 deletions _data/bestof_movies.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,25 @@
{
"title": "Best Movies",
"description": "",
"content": [{
"title": "Still Empty",
"title": "Lord Of The Rings 1-2-3",
"description": "",
"id": "StillEmpty"
}]
}
},
{
"title": "Star Wars 1-6",
"description": "",
"id": "StillEmpty"
},
{
"title": "Jurassic Park",
"description": "",
"id": "StillEmpty"
},
{
"title": "Terminator 1-2",
"description": "",
"id": "StillEmpty"
}
]
}
1 change: 1 addition & 0 deletions _data/bestof_music.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"title": "Best Music",
"description": "For now this is limited to Rock music since it's the kind of music I know most.",
"content": [{
"title": "The Black Parade",
"description": "My Chemical Romance",
Expand Down
40 changes: 36 additions & 4 deletions _data/bestof_podcasts.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,40 @@
{
"title": "Best Podcasts",
"description": "",
"content": [{
"title": "Still Empty",
"description": "",
"title": "Rework",
"description": "by Basecamp",
"id": "Rework"
},
{
"title": "Build And Analyze [RETIRED]",
"description": "with Marco Arment",
"id": "BuildAndAnalyze"
},
{
"title": "Hypercritical [RETIRED]",
"description": "with John Siracusa",
"id": "Hypercritical"
},
{
"title": "??",
"description": "About Health",
"id": "StillEmpty"
}]
}
},
{
"title": "Under The Radar",
"description": "with David Smith and Marco Arment",
"id": "UnderTheRadar"
},
{
"title": "Developing Perspective [RETIRED]",
"description": "with David Smith",
"id": "DevelopingPerspective"
},
{
"title": "Accidental Tech Podcast",
"description": "with Marco Arment, Casey Liss and John Siracusa",
"id": "ATP"
}
]
}
28 changes: 25 additions & 3 deletions _data/bestof_subreddits.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,30 @@
{
"title": "Best Subreddits",
"description": "",
"content": [{
"title": "Still Empty",
"title": "AskReddit",
"description": "",
"id": "StillEmpty"
}]
}
},{
"title": "europe",
"description": "",
"id": "StillEmpty"
},{
"title": "programming",
"description": "",
"id": "StillEmpty"
},{
"title": "personalfinance",
"description": "",
"id": "StillEmpty"
},{
"title": "todayilearned",
"description": "",
"id": "StillEmpty"
},{
"title": "WritingPrompts",
"description": "",
"id": "StillEmpty"
}
]
}
43 changes: 40 additions & 3 deletions _data/bestof_tvseries.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,45 @@
{
"title": "Best TV Series",
"description": "",
"content": [{
"title": "Still Empty",
"title": "Expanse",
"description": "",
"id": "StillEmpty"
}]
}
},
{
"title": "Game Of Thrones Season 1-5",
"description": "",
"id": "StillEmpty"
},
{
"title": "Westworld",
"description": "",
"id": "StillEmpty"
},
{
"title": "Breaking Bad",
"description": "",
"id": "StillEmpty"
},
{
"title": "Better Call Saul",
"description": "",
"id": "StillEmpty"
},
{
"title": "Grand Tour",
"description": "",
"id": "StillEmpty"
},
{
"title": "Black Mirror Season 1-2",
"description": "",
"id": "StillEmpty"
},
{
"title": "Chernobyl",
"description": "You should also listen to the companion podcast",
"id": "StillEmpty"
}
]
}
48 changes: 45 additions & 3 deletions _data/bestof_videoGames.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,50 @@
{
"title": "Best Video Games",
"description": "",
"content": [{
"title": "Still Empty",
"title": "Star Wars KOTOR 1-2",
"description": "",
"id": "StillEmpty"
}]
}
},
{
"title": "Command And Conquer 3 Tiberium Wars",
"description": "",
"id": "StillEmpty"
},
{
"title": "Age Of Empires 2",
"description": "",
"id": "StillEmpty"
},
{
"title": "Lord Of The Rings Battle For Middle Earth 2",
"description": "",
"id": "StillEmpty"
},
{
"title": "The Elder Scroll IV Oblivion",
"description": "",
"id": "StillEmpty"
},
{
"title": "Star Wars The Old Republic",
"description": "",
"id": "StillEmpty"
},
{
"title": "Guild Wars 2",
"description": "",
"id": "StillEmpty"
},
{
"title": "Star Wars Empire At War",
"description": "",
"id": "StillEmpty"
},
{
"title": "Mafia",
"description": "",
"id": "StillEmpty"
}
]
}
26 changes: 24 additions & 2 deletions _data/bestof_youtube.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,30 @@
{
"title": "Best Youtube Channels",
"description": "",
"content": [{
"title": "Still Empty",
"title": "Handmade Hero by Casey Muratori",
"description": "RPG made from scratch (including the engine) with every step clearly explained",
"url": "https://www.youtube.com/channel/UCbGQAz4nL_P2Em5p8KPDFIA",
"id": "StillEmpty"
},{
"title": "Game Maker's Toolkit",
"description": "",
"url": "https://www.youtube.com/channel/UCqJ-Xo29CKyLTjn6z2XwYAw",
"id": "StillEmpty"
},{
"title": "Kurzgesagt – In a Nutshell",
"description": "Perfectly animated science videos (mostly about space, but not necessarely)",
"url": "https://www.youtube.com/channel/UCsXVk37bltHxD1rDPwtNM8Q",
"id": "StillEmpty"
},{
"title": "Sebastian Lague",
"description": "Unity game development and algorithms",
"url": "https://www.youtube.com/channel/UCmtyQOKKmrMVaKuRXz02jbQ",
"id": "StillEmpty"
},{
"title": "Veritasium",
"description": "Science videos",
"url": "https://www.youtube.com/channel/UCHnyfMqiRRG1u-2MsSQLbXA",
"id": "StillEmpty"
}]
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ struct PriceViewModel {

Next we create our container object (manager) to handle persistance/networking and to load out model and make it available to the view. Remember to import Combine and to have your container implement the ObservableObject protocol to be able to use combine automatically:

'''
```
import Foundation
import Combine

Expand All @@ -50,13 +50,13 @@ class PricePresenter: ObservableObject {
}

}
'''
```

You also need to annotate the model with the @Published keyboard. This will tell Combine to automatically setup the stream for us.

Finally it is time to hook up the view. Since our model is optional we need to handle the initial empty state. I haven't found a great way to do it yet, there are a few methods, but all of them are not great. Hopefully Apple is going to introduce support for `if let` statements inside the body of a `View` soon enough. For now we have to use map that filters out the optionals, this way you can also set a default value.

'''
```
import SwiftUI

struct PriceView: View {
Expand All @@ -68,7 +68,7 @@ struct PriceView: View {
}

}
'''
```

Note: In this case we are returning the same view from both cases (a Text), if we would have returned different kind of views we would have needed to cast them to AnyView before returning them, otherwise the return type would not match.

Expand Down
Loading