- 1月 20 週四 202201:21
[超好聽音樂] 你的世界我曾來過
- 9月 28 週二 202103:01
[Swift 5.5] Combine for UIKit with async / await
ViewModel:
import WebAPI
import MVVM
final class Page2ViewModel: ObservableObject, Refreshable, Updateable {
@Published var isUpdate: Bool = false
@Published private(set) var cellViewModels: [Page2CellViewModel] = []
@Published private(set) var model: MainApodModel? {
didSet {
guard let model = model else {
return
}
cellViewModels = model.result.map { Page2CellViewModel(model: $0) }
}
}
func refresh() {
isUpdate = true
let parameter = MainApodParameter()
Task { @MainActor in
do {
let model: MainApodModel = try await MainApodWebAPI().invokeAsync(parameter)
isUpdate = false
self.model = model
} catch let error {
print(error.localizedDescription)
isUpdate = false
}
}
}
}
import WebAPI
import MVVM
final class Page2ViewModel: ObservableObject, Refreshable, Updateable {
@Published var isUpdate: Bool = false
@Published private(set) var cellViewModels: [Page2CellViewModel] = []
@Published private(set) var model: MainApodModel? {
didSet {
guard let model = model else {
return
}
cellViewModels = model.result.map { Page2CellViewModel(model: $0) }
}
}
func refresh() {
isUpdate = true
let parameter = MainApodParameter()
Task { @MainActor in
do {
let model: MainApodModel = try await MainApodWebAPI().invokeAsync(parameter)
isUpdate = false
self.model = model
} catch let error {
print(error.localizedDescription)
isUpdate = false
}
}
}
}
- 9月 27 週一 202100:51
[Swift 5.5] async / await 搭配 Value types MVVM
import WebAPI
import MVVM
struct Page2ViewModel: Refreshable, Updateable, MutatingClosure {
weak var binder: Binder?
var isUpdate: Bool = false
private(set) var cellViewModels: [Page2CellViewModel] = []
private(set) var model: MainApodModel? {
didSet {
guard let model = model else {
return
}
cellViewModels = model.result.map { Page2CellViewModel(model: $0) }
}
}
init(binder: Binder)
{
self.binder = binder
refresh()
}
- 9月 14 週二 202123:51
[SwiftUI] 顯示/隱藏 view
- 9月 01 週三 202101:02
Google Play & AppStore apps Privacy policy
---
---
---
- 8月 31 週二 202105:14
[Xcode] Fix release code sign issue

(Release 出現not match字樣)
- 8月 16 週一 202114:13
[超好聽音樂] Sold Out《無畏向前》
- 7月 08 週四 202122:03
[Swift 5.5] 用async / await 包裝PromiseKit過渡

用async / await 包裝PromiseKit,來快速支援 這新功能,有時間再慢慢將WebAPI layer的PromiseKit完全拿掉
但可惜的是最低需求是iOS 15、Swift 5.5及Xcode 13 (beta) 以上
- 6月 17 週四 202101:55
[iOS] Carthage command line 指令

— For Xcode 12.5 及 Xcode 13
(Carthage 0.37 改用 xcframeworks 來相容Intel及Apple自己的M1 CPU)