[iOS] ๐Ÿšจ Realm Delete ์—๋Ÿฌ

Madeline๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ปยท2024๋…„ 3์›” 18์ผ
1

iOS study

๋ชฉ๋ก ๋ณด๊ธฐ
42/61
post-custom-banner

๐Ÿ‘ฉ๐Ÿปโ€๐Ÿš’ย ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

  1. ์‚ฌ์‹ค ์•„์ง ํ™”๋ฉด์ „ํ™˜ํ•  ๋•Œ ๋ฐ์ดํ„ฐ ์ „๋‹ฌํ•˜๋Š”๊ฑฐ ์†์— ์•ˆ์ต์—ˆ๋‹ค.

Thread 1: "Cannot compare value '~' of type '__NSCFString' to property 'id' of type 'object id'"

Realm ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์‚ญ์ œ ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๋‹ค๊ฐ€ ์ด๋Ÿฐ ์—๋Ÿฌ๋ฅผ ๋งŒ๋‚ฌ๋‹ค.
๋Œ€์ถฉ String๊ณผ ObjectId ํƒ€์ž…์ด ๋‹ค๋ฅด๋‹ˆ๊นŒ ๋น„๊ตํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋‚ด์šฉ์ธ๋ฐ,
ObjectId๊ฐ€ ๋ญ”๊ฐ€?

ObjectId๊ฐ€ ๋ญ์•ผ

ObjectId๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ž์ฃผ ์ ‘ํ•˜๋Š” ์šฉ์–ด์ธ๋ฐ, ๋ชฝ๊ณ DB๋‚˜ Realm ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ž์ฃผ ๋ณธ๋‹ค.
๊ฐ„๋‹จํžˆ ๋งํ•ด, 'ObjectId'๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋œ ๊ฐ ํ•ญ๋ชฉ์„ ์œ ์ผํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์‹๋ณ„์ž์ด๋‹ค.

ObjectId์˜ ํŠน์ง•

  • ๊ณ ์œ ์„ฑ: ๊ฐ 'ObjectId'๋Š” ์œ ๋‹ˆํฌํ•˜๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์—์„œ ์–ด๋–ค ๋‘ ๊ฐ์ฒด๋„ ๊ฐ™์€ ID๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
  • ์ƒ์„ฑ ์‹œ๊ฐ„ ์ •๋ณด ํฌํ•จ: ์กฐ์‚ฌํ•˜๋ฉด์„œ ์•Œ๊ฒŒ ๋œ๊ฑด๋”” 'ObjectId'์—๋Š” ์ƒ์„ฑ๋œ ์‹œ๊ฐ„์ด ๋‚ด์žฅ๋˜์–ด ์žˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ์„ฑ๋œ ์‹œ์ ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ณ ์œ ํ•  ์ˆ˜ ์žˆ๋‚˜๋ณด๋‹ค.
  • ์ž‘์€ ํฌ๊ธฐ: 'ObjectId'๋Š” ๋‹จ 12๋ฐ”์ดํŠธ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ๋•๋ถ„์— ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์œผ๋ฉด์„œ๋„ ํšจ์œจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์™œ ์“ฐ๋‚˜?

๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ , ๊ฐ ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์„ ๋น ๋ฅด๊ณ  ์ •ํ™•ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด์„œ. ํŠนํžˆ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” ์ˆ˜๋งŽ์€ ๋ฐ์ดํ„ฐ ์‚ฌ์ด์—์„œ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„๋‚ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ, 'ObjectId'๊ฐ€ ์žˆ์œผ๋ฉด ์ด ์ž‘์—…์ด ํ›จ์”ฌ ์ˆ˜์›”ํ•ด์ง„๋‹ค๊ณ  ํ•œ๋‹ค.

ํ•ด๊ฒฐ

๋‚ด๊ฐ€ ์˜ค๋Š˜ ๋งŒ๋‚œ ๋ฌธ์ œ ์ƒํ™ฉ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ์˜ ID๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ฐพ์•„์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด์—ˆ๋‹ค. ์ด๋•Œ, ๋ฌธ์ž์—ด ํ˜•ํƒœ์˜ ID์™€ 'ObjectId'๋ฅผ ๋น„๊ตํ•  ์ˆ˜ ์—†๊ธฐ์— ๋ฐœ์ƒํ•œ ์—๋Ÿฌ์˜€๋Š”๋ฐ, ๋”ฐ๋ผ์„œ ๊ฐ™์€ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํ•ด๋‹น ID๋ฅผ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.
String -> ObjectId ์ด๋ ‡๊ฒŒ ๋ฐ”๊พธ๋ฉด ๋˜๋Š”๋ฐ,
Realm Repository ๋‚ด์—์„œ ์ง์ ‘์ ์œผ๋กœ ๋ฌธ์ž์—ด id๋ฅผ ObjectId ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์‹œ๋„๋ฅผ ํ•˜์ง€ ์•Š๊ณ , ๋Œ€์‹  ํ•„ํ„ฐ๋ง ์กฐ๊ฑด์— ๋ฌธ์ž์—ด์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ ค ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•œ ๋ฌธ์ œ์˜€๋‹ค.

Diary ๊ฐ์ฒด์˜ id (ObjectId)๋ฅผ ์ง์ ‘ ์ „๋‹ฌํ•˜๊ณ ,
RealmRepository์˜ delete(diaryId:) ๋ฉ”์„œ๋“œ๋Š” ์ด ObjectId๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Realm ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํ•ด๋‹น ์ผ๊ธฐ๋ฅผ ์ฐพ์•„ ์‚ญ์ œํ•˜๊ฒŒ ํ–ˆ๋‹ค.

profile
๐ŸŽ Apple Developer Academy@POSTECH 2๊ธฐ, ๐Ÿ€ SeSAC iOS 4๊ธฐ
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€