๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿงฏ Troubleshooting

[Cheliz] Realm ์ค‘๋ณต ์ถ”๊ฐ€ ๋ฐฉ์ง€

 

 

 

 

  ๋ฌธ์ œ  

์œ ์ €๊ฐ€ ํ•œ ์ž‘ํ’ˆ์€ ํ•œ ๋ฒˆ๋งŒ ๋กœ์ปฌ DB์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ค‘๋ณต ์ถ”๊ฐ€ ๋ฐฉ์ง€๋ฅผ ์–ด๋–ป๊ฒŒ ํ•  ์ˆ˜ ์žˆ์„๊นŒ ๊ณ ๋ฏผํ–ˆ๋‹ค.
API์—์„œ ์ œ๊ณตํ•ด ์ฃผ๋Š” ๊ฐ๊ฐ์˜ ID๋ฅผ ํ†ตํ•ด ์ถ”๊ฐ€ ์—ฌ๋ถ€๋ฅผ ๊ฐ€๋ ค๋‚ผ ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ ์ƒ๊ฐํ–ˆ๋‹ค.


์˜ํ™”๋ผ๋ฆฌ์•ผ ๋‹น์—ฐํžˆ ID๊ฐ€ ๊ฒน์น˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ, ๊ณผ์—ฐ TV ์‹œ๋ฆฌ์ฆˆ๋‚˜ ๋‹คํ๋ฉ˜ํ„ฐ๋ฆฌ ๋“ฑ ๋‹ค๋ฅธ ์ž‘ํ’ˆ๋“ค๋„ ID๊ฐ€ ๊ฒน์น˜์ง€ ์•Š์„๊นŒ..? ํ•˜๋Š” ์˜๋ฌธ์ด ๋“ค์—ˆ๋‹ค.
๋‚˜๋Š” ์˜ํ™”์™€ ๊ทธ ์™ธ ํƒ€์ž…์˜ ์ž‘ํ’ˆ๋“ค๊นŒ์ง€ ํ•œ๊บผ๋ฒˆ์— ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ..

 

์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด ์ฃผ๋Š” API ๋ฌธ์„œ๋ฅผ ์‚ดํŽด ๋ณด์•˜์ง€๋งŒ ๋ช…์‹œ๊ฐ€ ๋˜์–ด ์žˆ์ง€ ์•Š์•˜๋‹ค.

 

๊ทธ๋ž˜๋„ ํ˜น์‹œ ๋ชจ๋ฅธ๋‹ค๋Š” ์ƒ๊ฐ์œผ๋กœ API์˜ ํฌ๋Ÿผ์„ ์ฐพ์•„๋ณธ ๊ฒฐ๊ณผ..

 ๐ŸŽฌ IDs are only unique within their own namespace (๊ฐ™์€ namespace์— ์žˆ๋Š” ๋ฏธ๋””์–ด๋ผ๋ฆฌ๋งŒ ID๊ฐ€ ๊ฒน์น˜์ง€ ์•Š๋Š”๋‹ค.) 

..๋ผ๋Š” ๊ฒƒ์„ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

 

 

 

  ํ•ด๊ฒฐ  

// MediaRepository.swift

func fetch() -> Results<Media> {
    return realm.objects(Media.self)
}

func sameMediaExists(as selectedMedia: Media) -> Bool {
    let existingMedia = fetch().where {
        $0.mediaType == selectedMedia.mediaType &&
        $0.TMDBid == selectedMedia.TMDBid
    }
    
    return !existingMedia.isEmpty
}

 

 

TMDB IDs: IDs are only unique within their own namespace

→ ๊ฐ™์€ namespace์— ์žˆ๋Š” ๋ฏธ๋””์–ด๋ผ๋ฆฌ๋งŒ ID๊ฐ€ ๊ฒน์น˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, 

 

mediaType(movie, tv)๊ณผ TMDB ID๊ฐ€ ๋ชจ๋‘ ๊ฐ™์€์ง€ ๋น„๊ตํ•˜์—ฌ ๊ฐ™์€ ๋ฏธ๋””์–ด์ธ์ง€๋ฅผ Bool ํƒ€์ž…์œผ๋กœ ๋ฐ˜ํ™˜

 

 

 

๋ฏธ๋””์–ด ํƒ€์ž…๊ณผ ID ๋ชจ๋‘๋ฅผ ๋น„๊ตํ•˜์—ฌ ์ค‘๋ณต ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค..!

์„œ๋ฒ„์—์„œ ์ฃผ๋Š” ID์˜ ์กด์žฌ ์—ฌ๋ถ€์˜ ์†Œ์ค‘ํ•จ..์„ ๊นจ๋‹ฌ์•˜๋‹ค..