-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
오른쪽 스와이프 시 음악을 플레이리스트에 저장한다. #39
Comments
코드 리뷰 중 말씀해주신 부분을 본 기억이 납니다. func likeCurrentMusic() {
removeCurrentMusic()
// TODO: 현재 노래에 대한 좋아요 로직
}
func dislikeCurrentMusic() {
removeCurrentMusic()
// TODO: 현재 노래에 대한 싫어요 로직 |
맞습니다.
여기서 가장 중요한 부분은 우리는 프로토콜로 정의된
|
창우가 MusicListView를 개발해야한다.
저도 사실 이런 내용은 잘 몰라서 의논하고 싶어서 적어봤습니다 ㅎㅎ |
마침 제가 struct PlaylistListView: some View {
var playlistManager: any PlaylistRepository
}
protocol PlaylistRepository {
func fetchPlaylist() async
func deletePlaylist(playlistID: String)() async
} 이런식으로 PlaylistManager의 인터페이스만 의논해서 정해두고 좋은 기술적 도전이라고 생각합니다! |
저번에 뷰랑 뷰 모델 따로 작업할 때 프로토콜 만들어서 작업하자라고 말씀하셨던 것 같은데 그와 비슷한 맥락으로 이해했습니다. |
지금 CoreData 공부하며 Entity 정의 중이어서, 다 정의한 후에 매개변수나 리턴 값이 확정된 후 프로토콜 이야기해보면 어떨까요? |
맞습니다. DIP 그 자체인거죠 🙀🙀 대신 |
좋습니다!! CoreData를 PlaylistRepository 때문에 하시는 거라면 일단은 그것 조차도 Mock으로 두는 방법이 있을 것 같습니다. struct DefaultPlaylistRepository: PlaylistRepository {
private var playlistDatabaseService: any PlaylistDataBaseService
private var playlistNetworkService: any PlaylistNetworkService
func fetchPlaylist() async -> [Playlist] {
if isLoggedIn {
return await playlistDatabaseService.fetch()
}
return await playlistNetworkService.fetch()
}
} 이렇게 두고 struct MockDatabaseService: PlaylistDataBaseService {
private var playlistDatabaseService: any PlaylistDataBaseService
private var playlistNetworkService: PlaylistNetworkService
private var storage: [Playlist]
func fetch() async -> [Playlist] {
return // 가짜데이터
}
func save(playlist: Playlist) async {
storage.append(playlist)
}
} 이미 이렇게 하셨을 수도 있으시겠지만 이렇게 둔 다음에 |
예전에 마스터님께서 최대한 하위 모듈에 시켜라!라고 한게 이제 뭔가 와닿는 것 같습니다 |
- Data 계층에 CoreData의 DataModel이 추가 되면서, Model이라는 폴더가 생성되었다. - DTO 폴더만 존재하였으나, Model이라는 폴더가 생기며 Model 폴더 안에 DTO, DataModel을 정리할 수 있다.
- MusicKit에 Playlist라는 클래스가 이미 존재하여 MolioPlaylist로 이름을 설정했다.
No description provided.
The text was updated successfully, but these errors were encountered: