{"id":3205,"date":"2017-04-10T10:15:32","date_gmt":"2017-04-10T17:15:32","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=3205"},"modified":"2025-06-13T21:37:13","modified_gmt":"2025-06-14T04:37:13","slug":"couchbase-lite-embedded-in-ios-app-part1","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-lite-embedded-in-ios-app-part1\/","title":{"rendered":"iOS \uc571\uc5d0\uc11c \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ub77c\uc774\ud2b8 \uc2dc\uc791\ud558\uae30 : Part1"},"content":{"rendered":"<p>\uc774 \uae00\uc5d0\uc11c\ub294 iOS \uc571\uc5d0\uc11c Couchbase Lite\ub97c \uc2dc\uc791\ud558\ub294 \ubc29\ubc95\uc744 \uc0b4\ud3b4\ubd05\ub2c8\ub2e4. Couchbase Lite\ub294 \ub3c5\ub9bd\uc801\uc73c\ub85c, P2P \ub124\ud2b8\uc6cc\ud06c\uc5d0\uc11c \ub610\ub294 \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\ub97c \uc6d0\uaca9 \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub85c \uc0ac\uc6a9\ud558\uc5ec \uc791\ub3d9\ud560 \uc218 \uc788\ub294 \uc784\ubca0\ub514\ub4dc JSON \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc785\ub2c8\ub2e4. \uc5ec\uae30\uc11c\ub294 Swift\uc758 iOS \uc571\uc758 \ub9e5\ub77d\uc5d0\uc11c \ud504\ub808\uc784\uc6cc\ud06c\ub97c \uc0b4\ud3b4\ubcfc \uac83\uc774\uc9c0\ub9cc, \uc5ec\uae30\uc11c \uc124\uba85\ud558\ub294 \ubaa8\ub4e0 \ub0b4\uc6a9\uc740 \ub2e4\ub978 \ud50c\ub7ab\ud3fc(Android, iOS(ObjC), Xamarin)\uc5d0\uc11c \uac1c\ubc1c\ub41c \ubaa8\ubc14\uc77c \uc571\uc5d0\ub3c4 \ub3d9\uc77c\ud558\uac8c \uc801\uc6a9\ub429\ub2c8\ub2e4. \ud3b8\ucc28\uac00 \uc788\ub294 \uacbd\uc6b0 \ud574\ub2f9 \ud3b8\ucc28\ub97c \uba85\uc2dc\ud569\ub2c8\ub2e4. \ub2e4\ub978 \ud50c\ub7ab\ud3fc\uc5d0 \ub300\ud55c \uad00\ub828 \ud3ec\uc2a4\ud305\ub3c4 \uae30\ub300\ud574 \uc8fc\uc138\uc694!<\/p>\n<p><strong>\ucc38\uace0<\/strong>:  \ud604\uc7ac \ud504\ub85c\ub355\uc158 \ub9b4\ub9ac\uc2a4\uc778 Couchbase Mobile v1.4\uc5d0 \ub300\ud574 \ub17c\uc758\ud560 \uc608\uc815\uc785\ub2c8\ub2e4. \ucd5c\uc2e0 <a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/2.0\/whatsnew.html?language=ios\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ubaa8\ubc14\uc77c\uc758 \uac1c\ubc1c\uc790 \ud504\ub9ac\ubdf0 \ubc84\uc804 2.0<\/a> . \uc774\uc5d0 \ub300\ud574\uc11c\ub294 \ub2e4\uc74c \uac8c\uc2dc\ubb3c\uc5d0\uc11c \uc790\uc138\ud788 \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<h3><\/h3>\n<p><!--more--><\/p>\n<h3>\ubc30\uacbd<\/h3>\n<p>Couchbase \ubaa8\ubc14\uc77c \uc2a4\ud0dd\uc740 Couchbase \uc11c\ubc84, Couchbase \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774 \ubc0f Couchbase Lite \uc784\ubca0\ub514\ub4dc \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub85c \uad6c\uc131\ub429\ub2c8\ub2e4. \uc11c\ubc84\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/getting-comfortable-with-couchbase-mobile-installing-couchbase-server\/\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc11c\ubc84 \uc2dc\uc791\ud558\uae30 \uac00\uc774\ub4dc<\/a> \ubc0f \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uc758\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/ko\/getting-comfortable-couchbase-mobile-installing-sync-gateway\/\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774 \uc2dc\uc791\ud558\uae30 \uac00\uc774\ub4dc<\/a>.<\/p>\n<p>iOS \uc571 \uac1c\ubc1c\uacfc Swift\uc758 \uae30\ubcf8 \uc0ac\ud56d\uc5d0 \uc775\uc219\ud558\ub2e4\uace0 \uac00\uc815\ud558\uaca0\uc2b5\ub2c8\ub2e4. NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ub610\ub294 Couchbase\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\uace0 \uc2f6\uc73c\uc2dc\ub2e4\uba74\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/ko\/?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4<\/a>\u00a0\uc0ac\uc774\ud2b8.<\/p>\n<p>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4\ub294 \uc624\ud508\uc18c\uc2a4\uc785\ub2c8\ub2e4. \uc5ec\uae30\uc11c \uc0ac\uc6a9\ud558\ub294 \ubaa8\ub4e0 \uae30\ub2a5\uc740 \ubb34\ub8cc\ub85c \uc0ac\uc6a9\ud574 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h3>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ub77c\uc774\ud2b8<\/h3>\n<p>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ub77c\uc774\ud2b8\ub294 \uc5ec\ub7ec \ubc30\ud3ec \ubaa8\ub4dc\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li><strong>\uc635\uc158 1<\/strong>: \uc7a5\uce58\uc5d0\uc11c \ub3c5\ub9bd\ud615 \ud06c\ub85c\uc2a4 \ud50c\ub7ab\ud3fc \uc784\ubca0\ub514\ub4dc \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<li><strong>\uc635\uc158 2<\/strong>: \uc5ec\ub7ec \uae30\uae30\uc5d0\uc11c \ub370\uc774\ud130\ub97c \ub3d9\uae30\ud654\ud560 \uc218 \uc788\ub294 \uc6d0\uaca9 \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uc640 \ud568\uaed8 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uacbd\uc6b0\ub294 Couchbase \uc11c\ubc84\uc640 \ud568\uaed8 \uc804\uccb4 Couchbase \uc2a4\ud0dd\uc744 \ud3ec\ud568\ud558\ub3c4\ub85d \ud655\uc7a5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc7a5\uce58\uc5d0\uc11c Couchbase Lite\uc758 \uad00\uc810\uc5d0\uc11c \ubcf4\uba74 Couchbase Lite\uac00 \uc6d0\uaca9 \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uc640 \uc778\ud130\ud398\uc774\uc2a4\ud558\ubbc0\ub85c Couchbase \uc11c\ubc84\uac00 \uc788\ub294\uc9c0 \uc5ec\ubd80\ub294 \ud06c\uac8c \uc911\uc694\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/li>\n<li><strong>\uc635\uc158 3<\/strong>: P2P \ubaa8\ub4dc\uc5d0\uc11c \uc0ac\uc6a9 \uac00\ub2a5<\/li>\n<\/ul>\n<p>\uc5ec\uae30\uc11c\ub294 \uc635\uc158 1\uc5d0 \ucd08\uc810\uc744 \ub9de\ucd94\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<h4>\ub124\uc774\ud2f0\ube0c API<\/h4>\n<p>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ub77c\uc774\ud2b8\ub294 \uc571\uc774 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ud50c\ub7ab\ud3fc\uacfc \uc27d\uac8c \uc778\ud130\ud398\uc774\uc2a4\ud560 \uc218 \uc788\ub294 iOS, \uc548\ub4dc\ub85c\uc774\ub4dc, \uc708\ub3c4\uc6b0\uc6a9 \ub124\uc774\ud2f0\ube0c API\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc571 \uac1c\ubc1c\uc790\ub294 Couchbase Lite \uc784\ubca0\ub514\ub4dc \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \ub0b4\ubd80\uc5d0 \ub300\ud574 \uac71\uc815\ud560 \ud544\uc694 \uc5c6\uc774 \uba4b\uc9c4 \uc571 \uad6c\ucd95\uc5d0\ub9cc \uc9d1\uc911\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uae30\ubcf8 API\ub97c \uc0ac\uc6a9\ud558\uba74 \ub2e4\ub978 \ud50c\ub7ab\ud3fc \ud504\ub808\uc784\uc6cc\ud06c\/\uc11c\ube0c\uc2dc\uc2a4\ud15c\uacfc \uc0c1\ud638 \uc791\uc6a9\ud560 \ub54c\uc640 \ub9c8\ucc2c\uac00\uc9c0\ub85c Couchbase Lite \ud504\ub808\uc784\uc6cc\ud06c\uc640 \uc0c1\ud638 \uc791\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ube14\ub85c\uadf8 \uac8c\uc2dc\ubb3c\uc5d0\uc11c\ub294 \ub2e4\uc2dc \ud55c \ubc88 Couchbase Mobile v1.4\uc5d0 \ub300\ud574 \uc124\uba85\ud558\uaca0\uc2b5\ub2c8\ub2e4. \uc804\uccb4 API \ubaa9\ub85d\uc740 \ub2e4\uc74c\uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/1.4\/references\/couchbase-lite\/couchbase-lite\/index.html\"> \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uac1c\ubc1c\uc790<\/a> \uc0ac\uc774\ud2b8.<\/p>\n<h3>\ud1b5\ud569<\/h3>\n<p>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ub77c\uc774\ud2b8 \ud504\ub808\uc784\uc6cc\ud06c\ub97c iOS \uc571\uc5d0 \ud1b5\ud569\ud558\ub294 \ub370\ub294 \uc5ec\ub7ec \uac00\uc9c0 \uc635\uc158\uc774 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c\uacfc \uac19\uc740 \uc885\uc18d\uc131 \uad00\ub9ac \uc2dc\uc2a4\ud15c\uc744 \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uac00\uc7a5 \uac04\ub2e8\ud560 \uac83\uc785\ub2c8\ub2e4. <a href=\"https:\/\/cocoapods.org\">\ucf54\ucf54\uc544\ud31f<\/a> \ub610\ub294 <a href=\"https:\/\/github.com\/Carthage\/Carthage\">\uce74\ub974\ud0c0\uace0<\/a>\ub97c \uc0ac\uc6a9\ud574\ub3c4 \ub418\uc9c0\ub9cc, \uc6d0\ud558\ub294 \uacbd\uc6b0 \ud504\ub808\uc784\uc6cc\ud06c\ub97c \uc571 \ud504\ub85c\uc81d\ud2b8\uc5d0 \uc218\ub3d9\uc73c\ub85c \ud3ec\ud568\ud560 \uc218 \uc788\ub294 \uc635\uc158\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc800\ud76c\uc758 <a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/1.4\/installation\/ios\/index.html?language=ios\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ubaa8\ubc14\uc77c \uc2dc\uc791 \uac00\uc774\ub4dc<\/a>\u00a0\ub97c \ud074\ub9ad\ud574 \ub2e4\uc591\ud55c \ud1b5\ud569 \uc635\uc158\uc744 \ud655\uc778\ud558\uc138\uc694.<\/p>\n<p><strong>\ucc38\uace0<\/strong> Swift \uc571\uc758 \uacbd\uc6b0 \ud504\ub808\uc784\uc6cc\ud06c\ub97c \uc784\ud3ec\ud2b8\ud55c \ud6c4 \ube0c\ub9bf\uc9d5 \ud5e4\ub354(\uc571\uc5d0 \uc544\uc9c1 \uc5c6\ub294 \uacbd\uc6b0)\ub97c \uc0dd\uc131\ud558\uace0 \ub2e4\uc74c \ud30c\uc77c\uc744 \uc784\ud3ec\ud2b8\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"wrap:true scroll:true lang:swift decode:true\" title=\"\ube0c\ub9ac\uc9d5 \ud5e4\ub354\">#import &lt;CouchbaseLite\/CouchbaseLite.h&gt;\r\n#import &lt;CouchbaseLiteListener\/CBLListener.h&gt;<\/pre>\n<p>&nbsp;<\/p>\n<h3>\ub370\ubaa8 \uc571<\/h3>\n<p>\uc5ec\uae30\uc5d0\uc11c \ub370\ubaa8 Xcode \ud504\ub85c\uc81d\ud2b8\ub97c \ub2e4\uc6b4\ub85c\ub4dc\ud558\uc138\uc694. <a href=\"https:\/\/github.com\/couchbaselabs\/couchbase-lite-ios-starterapp\">\uae43\ud5c8\ube0c \ub9ac\ud3ec\uc9c0\ud1a0\ub9ac<\/a> . \ube14\ub85c\uadf8\uc758 \ub098\uba38\uc9c0 \ubd80\ubd84\uc5d0\uc11c\ub294 \uc774 \uc571\uc744 \uc608\ub85c \uc0ac\uc6a9\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\">git clone git@github.com:couchbaselabs\/couchbase-lite-ios-starterapp.git<\/pre>\n<p>&nbsp;<\/p>\n<p>\uc774 \uc571\uc740 \ucf54\ucf54\uc544\ud31f\uc744 \uc0ac\uc6a9\ud558\uc5ec Couchbase Lite \ud504\ub808\uc784\uc6cc\ud06c\ub97c \ud1b5\ud569\ud558\uba70, Couchbase Lite \ud504\ub808\uc784\uc6cc\ud06c \uc0ac\uc6a9\uc758 \uae30\ubcf8\uc744 \uc775\ud788\uae30 \uc704\ud55c \uc571\uc785\ub2c8\ub2e4. \ub2e4\uc6b4\ub85c\ub4dc\uac00 \uc644\ub8cc\ub418\uba74 \uc571\uc744 \ube4c\ub4dc\ud558\uace0 \uc2e4\ud589\ud558\uc138\uc694. \uc774 \uc571\uc744 \uc2dc\uc791\uc810\uc73c\ub85c \uc0ac\uc6a9\ud558\uc5ec \ub2e4\ub978 API\ub97c \ud14c\uc2a4\ud2b8\ud558\uae30 \uc704\ud574 \uc571\uc744 \ud655\uc7a5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5680 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/04\/cblitedemo-compressor.gif\" alt=\"\" width=\"329\" height=\"600\" \/><\/p>\n<p>&nbsp;<\/p>\n<h3>\uae30\ubcf8 \uc6cc\ud06c\ud50c\ub85c<\/h3>\n<h4><strong>\ub85c\uceec \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ub9cc\ub4e4\uae30<\/strong><\/h4>\n<p>\uc5f4\uae30\u00a0<em>DB\uba54\uc778\uba54\ub274\ubdf0\ucee8\ud2b8\ub864\ub7ec.swift<\/em> \ud30c\uc77c\uc744 \ucc3e\uc544\u00a0<em>createDBWithName<\/em> \ud568\uc218\uc785\ub2c8\ub2e4.<\/p>\n<p>\uadf8\ub7ec\uba74 \uae30\ubcf8 \uacbd\ub85c(\/\ub3c4\uc11c\uad00\/\uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8 \uc9c0\uc6d0)\uc5d0 \uc9c0\uc815\ub41c \uc774\ub984\uc758 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 \uc0dd\uc131\ub429\ub2c8\ub2e4. \uc778\uc2a4\ud134\uc2a4\ud654\ud560 \ub54c \ub2e4\ub978 \ub514\ub809\ud130\ub9ac\ub97c \uc9c0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/1.4\/references\/couchbase-lite\/couchbase-lite\/manager\/manager\/index.html\">CBLManager<\/a> \ud074\ub798\uc2a4.<\/p>\n<pre class=\"wrap:true lang:swift decode:true\" title=\"\ub370\uc774\ud130\ubca0\uc774\uc2a4 \ub9cc\ub4e4\uae30\">do {\r\n    \/\/ 1: Set Database Options\r\n    let options = CBLDatabaseOptions()\r\n    options.storageType = kCBLSQLiteStorage\r\n    options.create = true\r\n\r\n     \/\/ 2: Create a DB if it does not exist else return handle to existing one\r\n     try cbManager.openDatabaseNamed(name.lowercased(), with: options)\r\n}\r\ncatch {\r\n\/\/ handle error\r\n}\r\n<\/pre>\n<ol>\n<li style=\"text-align: left\">\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc640 \uc5f0\uacb0\ud560 CBLDatabaseOptions \uac1d\uccb4\ub97c \ub9cc\ub4ed\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 encryptionKey \uc18d\uc131\uc744 \uc0ac\uc6a9\ud558\uc5ec \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc0ac\uc6a9\ud560 \uc554\ud638\ud654 \ud0a4\ub97c \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c\uc5d0\uc11c \ub2e4\ub978 \uc635\uc158\uc744 \uc0b4\ud3b4\ubcf4\uc138\uc694. <a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/1.4\/references\/couchbase-lite\/couchbase-lite\/manager\/database-options\/index.html\">CBLDatabaseOptions<\/a> \ud074\ub798\uc2a4.<\/li>\n<li style=\"text-align: left\">\ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc774\ub984\uc740 \uc18c\ubb38\uc790\ub85c \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4. \uc0d8\ud50c \uc571\uc740 \uc790\ub3d9\uc73c\ub85c \uc774\ub984\uc744 \uc18c\ubb38\uc790\ub85c \ud45c\uc2dc\ud569\ub2c8\ub2e4. \uc131\uacf5\ud558\uba74 \ub85c\uceec \ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 \uc5c6\ub294 \uacbd\uc6b0 \uc0c8 \ub85c\uceec \ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 \uc0dd\uc131\ub429\ub2c8\ub2e4. \uc874\uc7ac\ud558\uba74 \uae30\uc874 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \ub300\ud55c \ud578\ub4e4\uc774 \ubc18\ud658\ub429\ub2c8\ub2e4.<\/li>\n<\/ol>\n<h4><strong>\ub370\uc774\ud130\ubca0\uc774\uc2a4 \ubaa9\ub85d<\/strong><\/h4>\n<p>\ub9e4\uc6b0 \uac04\ub2e8\ud569\ub2c8\ub2e4. \ub2e4\uc74c\uc5d0\uc11c <em>DBListTableViewController.swift<\/em> \ud30c\uc77c\uc785\ub2c8\ub2e4.  The <em>\ubaa8\ub4e0 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc774\ub984<\/em> \uc18d\uc131\uc744 <em>CBLManager<\/em> \uc0dd\uc131\ub41c \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \ub098\uc5f4\ud569\ub2c8\ub2e4.<\/p>\n<h4><strong>\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc0c8 \ubb38\uc11c \ucd94\uac00\ud558\uae30<\/strong><\/h4>\n<p>\uc5f4\uae30\u00a0<em>DocListTableViewController.swift<\/em> \ud30c\uc77c\uc744 \ucc3e\uc544\u00a0<em>createDocWithName<\/em> \ud568\uc218\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"wrap:true lang:swift decode:true\" title=\"\ubb38\uc11c \ucd94\uac00\">do {\r\n            \/\/ 1: Create Document with unique Id\r\n            let doc = self.db?.createDocument()\r\n             \r\n            \/\/ 2: Construct user properties Object\r\n            let userProps = [DocumentUserProperties.name.rawValue:name,DocumentUserProperties.overview.rawValue:overview]\r\n           \r\n            \/\/ 3: Add a new revision with specified user properties\r\n            let _ = try doc?.putProperties(userProps)            \r\n        }\r\n        catch  {\r\n         \/\/ handle error            \r\n        }<\/pre>\n<ol>\n<li>\uc774 \ud638\ucd9c\uc758 \uacb0\uacfc\ub85c \uace0\uc720 ID\ub97c \uac00\uc9c4 \ubb38\uc11c\uac00 \uc0dd\uc131\ub429\ub2c8\ub2e4.<\/li>\n<li>\uc0ac\uc6a9\uc790 \uc18d\uc131 \uc9d1\ud569\uc744  \uc30d\uc73c\ub85c \uc9c0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\ub978 \ubc29\ubc95\uc73c\ub85c <em>CBLDocumentModel<\/em> \uac1d\uccb4\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ub370\uc774\ud130\ub97c \uc9c0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 <em>CBLDocumentModel <\/em>\ub294 iOS \ud50c\ub7ab\ud3fc\uc5d0\uc11c\ub9cc \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<em>.\u00a0<\/em>\uc774 \uc608\uc81c\uc5d0\uc11c\ub294  \uc18d\uc131\uc744 \uc0ac\uc6a9\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ol>\n<p>\uc774\ub807\uac8c \ud558\uba74 \uc9c0\uc815\ub41c \uc0ac\uc6a9\uc790 \uc18d\uc131\uc744 \uac00\uc9c4 \ubb38\uc11c\uc758 \uc0c8 \uc218\uc815\ubcf8\uc774 \uc0dd\uc131\ub429\ub2c8\ub2e4.<\/p>\n<h4><strong>\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \ubb38\uc11c \ub098\uc5f4<\/strong><\/h4>\n<p>\uc5f4\uae30\u00a0<em>DocListTableViewController.swift<\/em> \ud30c\uc77c\uc744 \ucc3e\uc544\u00a0<em>\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \ub300\ud55c \ubaa8\ub4e0 \ubb38\uc11c \uac00\uc838\uc624\uae30<\/em>\u00a0\ud568\uc218<\/p>\n<pre class=\"wrap:true lang:swift decode:true\" title=\"\ubb38\uc11c \ubaa9\ub85d\">do {\r\n\u00a0 \u00a0 \u00a0 guard let dbName = dbName else {\r\n\u00a0 \u00a0 \u00a0     return\r\n\u00a0 \u00a0 \u00a0 \u00a0}\r\n\u00a0 \u00a0 \u00a0 \u00a0\/\/ 1. Get handle to DB with specified name\r\n\u00a0 \u00a0 \u00a0  self.db = try cbManager.existingDatabaseNamed(dbName)\r\n\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\r\n       \/\/ 2. Create Query to fetch all documents. You can set a number of properties\r\n       \/\/ on the query object\r\n\u00a0 \u00a0 \u00a0 \u00a0liveQuery = self.db?.createAllDocumentsQuery().asLive()\r\n\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\r\n\u00a0 \u00a0 \u00a0  guard let liveQuery = liveQuery else {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0return\r\n\u00a0 \u00a0 \u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\r\n\u00a0 \u00a0 \u00a0 \u00a0\/\/ 3: You can optionally set a number of properties on the query object.\r\n\u00a0 \u00a0 \u00a0 \u00a0\/\/ Explore other properties on the query object\r\n\u00a0 \u00a0 \u00a0 \u00a0liveQuery.limit = UInt(UINT32_MAX) \/\/ All documents\r\n\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\r\n\u00a0 \u00a0 \u00a0 \u00a0\/\/ \u00a0 query.postFilter =\r\n\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\r\n\u00a0 \u00a0 \u00a0  \/\/4. Start observing for changes to the database\r\n\u00a0 \u00a0 \u00a0 \u00a0self.addLiveQueryObserverAndStartObserving()\r\n\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0 \u00a0\/\/ 5: Run the query to fetch documents asynchronously\r\n\u00a0 \u00a0 \u00a0 liveQuery.runAsync({ (enumerator, error) in\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0switch error {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  case nil:\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\/\/ 6: The \"enumerator\" is of type CBLQueryEnumerator and\r\n             \/\/ is an enumerator for the results\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  self.docsEnumerator = enumerator\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 default: \u00a0 \u00a0\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 })\r\n\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\r\n\u00a0 \u00a0 \u00a0 \u00a0 }\r\n\u00a0 \u00a0 \u00a0 \u00a0 catch\u00a0 {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\/\/ handle error\r\n\u00a0 \u00a0 \u00a0 \u00a0 }\r\n<\/pre>\n<ol>\n<li>\uc9c0\uc815\ub41c \uc774\ub984\uc758 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \ub300\ud55c \ud578\ub4e4 \uac00\uc838\uc624\uae30<\/li>\n<li>\ub9cc\ub4e4\uae30 <a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/1.4\/references\/couchbase-lite\/couchbase-lite\/query\/query\/index.html\">CBLQuery<\/a> \uac1d\uccb4\uc785\ub2c8\ub2e4. \uc774 \ucffc\ub9ac\ub294 \ubaa8\ub4e0 \ubb38\uc11c\ub97c \uac00\uc838\uc624\ub294 \ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uc77c\ubc18 \ucffc\ub9ac \uac1d\uccb4 \ub610\ub294 \"\ub77c\uc774\ube0c\" \ucffc\ub9ac \uac1d\uccb4\ub97c \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \"\ub77c\uc774\ube0c\" \ucffc\ub9ac \uac1c\uccb4\uc758 \uc720\ud615\uc740 <a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/1.4\/references\/couchbase-lite\/couchbase-lite\/query\/live-query\/index.html\">CBLLiveQuery<\/a> \ucffc\ub9ac \uacb0\uacfc\uc5d0 \uc601\ud5a5\uc744 \ubbf8\uce58\ub294 \ubc29\uc2dd\uc73c\ub85c \ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 \ubcc0\uacbd\ub420 \ub54c\ub9c8\ub2e4 \uc790\ub3d9\uc73c\ub85c \uc0c8\ub85c \uace0\uccd0\uc9d1\ub2c8\ub2e4.<\/li>\n<li>\ucffc\ub9ac \uac1d\uccb4\uc5d0\ub294 \uacb0\uacfc\ub97c \uc0ac\uc6a9\uc790 \uc9c0\uc815\ud558\uae30 \uc704\ud574 \uc870\uc815\ud560 \uc218 \uc788\ub294 \uc5ec\ub7ec \uac00\uc9c0 \uc18d\uc131\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc18d\uc131\uc744 \uc218\uc815\ud558\uace0 \uacb0\uacfc\uc5d0 \ubbf8\uce58\ub294 \uc601\ud5a5\uc744 \ud655\uc778\ud574 \ubcf4\uc138\uc694.<\/li>\n<li>\ub370\uc774\ud130\ubca0\uc774\uc2a4 \ubcc0\uacbd\uc0ac\ud56d\uc5d0 \ub300\ud55c \uc54c\ub9bc\uc744 \ubc1b\uc73c\ub824\uba74 \ub77c\uc774\ube0c \ucffc\ub9ac \uac1c\uccb4\uc5d0 \uba85\uc2dc\uc801\uc73c\ub85c \uc635\uc800\ubc84\ub97c \ucd94\uac00\ud574\uc57c \ud569\ub2c8\ub2e4. \uc774\uc5d0 \ub300\ud574\uc11c\ub294 \"\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \ubb38\uc11c \ubcc0\uacbd \uc0ac\ud56d \uad00\ucc30\ud558\uae30\" \uc139\uc158\uc5d0\uc11c \uc790\uc138\ud788 \uc124\uba85\ud569\ub2c8\ub2e4.<strong>\u00a0<\/strong>\uad00\ucc30\uc790\uac00 \ub354 \uc774\uc0c1 \ud544\uc694\ud558\uc9c0 \uc54a\uc73c\uba74 \uad00\ucc30\uc790\ub97c \uc81c\uac70\ud558\uace0 \ubcc0\uacbd \uc0ac\ud56d \uad00\ucc30\uc744 \uc911\ub2e8\ud558\ub294 \uac83\uc744 \uc78a\uc9c0 \ub9c8\uc138\uc694!<\/li>\n<li>\u00a0\ucffc\ub9ac\ub97c \ube44\ub3d9\uae30\uc801\uc73c\ub85c \uc2e4\ud589\ud569\ub2c8\ub2e4. \uc6d0\ud558\ub294 \uacbd\uc6b0 \ub3d9\uae30\uc2dd\uc73c\ub85c \uc2e4\ud589\ud560 \uc218\ub3c4 \uc788\uc9c0\ub9cc \ub370\uc774\ud130 \uc9d1\ud569\uc774 \ud070 \uacbd\uc6b0\uc5d0\ub294 \ube44\ub3d9\uae30\uc2dd\uc73c\ub85c \uc2e4\ud589\ud558\ub294 \uac83\uc774 \uc88b\uc2b5\ub2c8\ub2e4.<\/li>\n<li>\ucffc\ub9ac\uac00 \uc131\uacf5\uc801\uc73c\ub85c \uc2e4\ud589\ub418\uba74 \ucffc\ub9ac\uac00 \uc131\uacf5\uc801\uc73c\ub85c \uc2e4\ud589\ub418\uba74 <a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/1.4\/references\/couchbase-lite\/couchbase-lite\/query\/query-enumerator\/index.html\">CBLQueryEnumerator<\/a> \uac1d\uccb4\uc785\ub2c8\ub2e4. \ucffc\ub9ac \uc5f4\uac70\uc790\ub97c \uc0ac\uc6a9\ud558\uba74 \uacb0\uacfc\ub97c \uc5f4\uac70\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uacb0\uacfc\ub97c \ud45c\uc2dc\ud558\ub294 \ud14c\uc774\ube14 \ubcf4\uae30\uc758 \ub370\uc774\ud130 \uc18c\uc2a4\ub85c \ub9e4\uc6b0 \uc801\ud569\ud569\ub2c8\ub2e4.<\/li>\n<\/ol>\n<h4><strong>\uae30\uc874 \ubb38\uc11c \ud3b8\uc9d1 <\/strong><\/h4>\n<p><strong>\u00a0<\/strong>\uc5f4\uae30\u00a0<em>DocListTableViewController.swift<\/em> \ud30c\uc77c\uc744 \ucc3e\uc544\u00a0<em>updateDocWithName\u00a0<\/em>\ud568\uc218\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"wrap:true lang:swift decode:true\" title=\"\ubb38\uc11c \ud3b8\uc9d1\">do {\r\n\u00a0 \u00a0 \u00a0 \u00a0\/\/ 1: Get the document associated with the row\r\n\u00a0 \u00a0 \u00a0  let doc = self.docAtIndex(index)\r\n\u00a0\u00a0\r\n\u00a0 \u00a0 \u00a0 \u00a0\/\/ 2: Construct user properties Object with updated values\r\n\u00a0 \u00a0 \u00a0 \u00a0var userProps = [DocumentUserProperties.name.rawValue:name,DocumentUserProperties.overview.rawValue:overview]\r\n\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\r\n\u00a0 \u00a0 \u00a0 \u00a0\/\/ 3: If a previous revision of document exists, make sure to specify that.\r\n       \/\/ SInce its an update, it should exist!\r\n\u00a0 \u00a0 \u00a0 if let revId = doc?.currentRevisionID\u00a0 {\r\n\u00a0\u00a0  \u00a0 \u00a0 \u00a0 \u00a0 userProps[\"_rev\"] = revId\r\n\u00a0 \u00a0 \u00a0 }\r\n\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\r\n\u00a0 \u00a0 \u00a0 \/\/ 4: Add a new revision with specified user properties\r\n\u00a0 \u00a0 \u00a0 let savedRev = try doc?.putProperties(userProps)\r\n\u00a0 }\r\n\u00a0 catch\u00a0 {\r\n\u00a0        \/\/ handle error\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\r\n\u00a0  }\r\n\r\n\u00a0fileprivate func docAtIndex(_ index:Int) -&gt; CBLDocument? {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \/\/ 1. Get the CBLQueryRow object at specified index\r\n\u00a0 \u00a0 \u00a0 \u00a0 let queryRow = self.docsEnumerator?.row(at: UInt(index))\r\n\u00a0 \u00a0 \u00a0 \u00a0\r\n\u00a0 \u00a0 \u00a0 \u00a0 \/\/ 2: Get the document associated with the row\r\n\u00a0 \u00a0 \u00a0 \u00a0 let doc = queryRow?.document\u00a0 \u00a0 \u00a0 \u00a0\r\n\u00a0 \u00a0 \u00a0 \u00a0 return doc\r\n }\r\n<\/pre>\n<ol>\n<li>\ud3b8\uc9d1\uc774 \ud544\uc694\ud55c \ubb38\uc11c\uc5d0 \ub300\ud55c \ud578\ub4e4\uc744 \uac00\uc838\uc635\ub2c8\ub2e4. \ubb38\uc11c\uc5d0\uc11c <a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/1.4\/references\/couchbase-lite\/couchbase-lite\/query\/query-enumerator\/index.html\">CBLQueryEnumerator<\/a> \ub97c \ucffc\ub9ac\ud558\uc5ec \uc120\ud0dd\ud55c \uc778\ub371\uc2a4\uc5d0\uc11c \ubb38\uc11c\uc5d0 \ub300\ud55c \ud578\ub4e4\uc744 \uac00\uc838\uc62c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<li>\uc0ac\uc6a9\uc790 \uc18d\uc131\uc744  \uc30d\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8\ud569\ub2c8\ub2e4. \ub2e4\uc74c\uacfc \uac19\uc740 \ub300\uc548\uc774 \uc788\uc2b5\ub2c8\ub2e4. <em>CBLDocumentModel<\/em> \uac1d\uccb4\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ub370\uc774\ud130\ub97c \uc9c0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uae30\ub2a5\uc740 iOS\uc5d0\uc11c\ub9cc \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uc608\uc81c\uc5d0\uc11c\ub294  \uc18d\uc131\uc744 \uc0ac\uc6a9\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/li>\n<li>\ubb38\uc11c\ub97c \uc5c5\ub370\uc774\ud2b8\ud558\ub824\uba74 \uc5c5\ub370\uc774\ud2b8\ud574\uc57c \ud558\ub294 \ubb38\uc11c\uc758 \uac1c\uc815\ud310\uc744 \uba85\uc2dc\uc801\uc73c\ub85c \ud45c\uc2dc\ud558\uae30 \uc704\ud574 \uac1c\uc815\uc544\uc774\ub514\uac00 \ud544\uc694\ud569\ub2c8\ub2e4. \uc774\uac83\uc740 \"<em>_rev<\/em>\" \ud0a4\ub97c \uc785\ub825\ud569\ub2c8\ub2e4. \uc774 \ud0a4\ub294 \ucda9\ub3cc \ud574\uacb0\uc5d0 \ud544\uc694\ud569\ub2c8\ub2e4. \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \ub2e4\uc74c\uacfc \uac19\uc774 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/current\/guides\/couchbase-lite\/native-api\/revision\/index.html?language=ios\">\uc5ec\uae30<\/a>. \uadf8\ub7ec\uba74 \uc9c0\uc815\ub41c \uc0ac\uc6a9\uc790 \uc18d\uc131\uc744 \uac00\uc9c4 \ubb38\uc11c\uc758 \uc0c8 \uc218\uc815\ubcf8\uc774 \uc0dd\uc131\ub429\ub2c8\ub2e4.<\/li>\n<\/ol>\n<h4><strong>\uae30\uc874 \ubb38\uc11c \uc0ad\uc81c\ud558\uae30 <\/strong><\/h4>\n<p><strong>\u00a0<\/strong>\uc5f4\uae30\u00a0<em>DocListTableViewController.swift<\/em> \ud30c\uc77c\uc744 \ucc3e\uc544\u00a0<em>deleteDocAtIndex<\/em>\u00a0\ud568\uc218\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"wrap:true lang:swift decode:true\" title=\"\ubb38\uc11c \uc0ad\uc81c\">do {\r\n \u00a0 \u00a0 \u00a0 \/\/ 1: Get the document associated with the row\r\n\u00a0 \u00a0 \u00a0 \u00a0let doc = self.docAtIndex(index)\u00a0 \u00a0 \u00a0 \u00a0 \u00a0\r\n\u00a0\u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\r\n\u00a0 \u00a0 \u00a0 \u00a0\/\/ 2: Delete the document\r\n\u00a0 \u00a0 \u00a0 \u00a0try doc?.delete()\r\n\u00a0\u00a0 }\r\n\u00a0 \u00a0catch\u00a0 {\r\n\u00a0\u00a0\u00a0 \u00a0 \u00a0\/\/ Handle error\r\n\u00a0 \u00a0}\r\n<\/pre>\n<ol>\n<li>\ud3b8\uc9d1\uc774 \ud544\uc694\ud55c \ubb38\uc11c\uc758 \ud578\ub4e4\uc744 \uac00\uc838\uc635\ub2c8\ub2e4. \uc120\ud0dd\ud55c \uc778\ub371\uc2a4\uc5d0\uc11c \ubb38\uc11c\uc5d0 \ub300\ud55c \ud578\ub4e4\uc744 \uac00\uc838\uc624\uae30 \uc704\ud574 CBLQueryEnumerator\ub97c \ucffc\ub9ac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<li>\ubb38\uc11c\ub97c \uc0ad\uc81c\ud569\ub2c8\ub2e4. \uc774\ub807\uac8c \ud558\uba74 \ubb38\uc11c\uc758 \ubaa8\ub4e0 \uc218\uc815\ubcf8\uc774 \uc0ad\uc81c\ub429\ub2c8\ub2e4.<\/li>\n<\/ol>\n<h4><strong>\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \ubb38\uc11c \ubcc0\uacbd \uc0ac\ud56d \uad00\ucc30\ud558\uae30<\/strong><\/h4>\n<p>\uc5f4\uae30\u00a0<em>DocListTableViewController.swift<\/em> \ud30c\uc77c\uc744 \ucc3e\uc544\u00a0<em>\ucd94\uac00 \ub77c\uc774\ube0c \ucffc\ub9ac \uc635\uc800\ubc84 \ubc0f \uc2dc\uc791 \uc635\uc800\ube59<\/em>\u00a0\ud568\uc218<\/p>\n<pre class=\"wrap:true lang:swift decode:true\" title=\"\uc2e4\uc2dc\uac04 \ucffc\ub9ac \uc635\uc800\ubc84\">\u00a0\u00a0 \/\/ 1. iOS Specific. Add observer to the live Query object\r\n\u00a0 \u00a0 \u00a0 \u00a0 liveQuery.addObserver(self, forKeyPath: \"rows\", options: NSKeyValueObservingOptions.new, context: nil)\r\n\u00a0\u00a0 \u00a0 \u00a0 \u00a0\r\n\u00a0 \u00a0\/\/ 2. Start observing changes\r\n\u00a0 \u00a0 \u00a0 \u00a0 liveQuery.start()\r\n<\/pre>\n<ol>\n<li>\ucffc\ub9ac \uacb0\uacfc\uc5d0 \uc601\ud5a5\uc744 \ubbf8\uce58\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \ubcc0\uacbd \uc0ac\ud56d\uc744 \uc54c\ub9bc \ubc1b\uc73c\ub824\uba74 \ub77c\uc774\ube0c \ucffc\ub9ac \uac1c\uccb4\uc5d0 \uc635\uc800\ubc84\ub97c \ucd94\uac00\ud558\uc138\uc694. \uc774\uac83\uc740 Swift\/ Obj C \ubc84\uc804\uc774 \ub2e4\ub978 \ubaa8\ubc14\uc77c \ud50c\ub7ab\ud3fc\uacfc \ub2e4\ub978 \uacbd\uc6b0\uc785\ub2c8\ub2e4. \ub2e4\ub978 \ud50c\ub7ab\ud3fc\uc5d0\uc11c \uac1c\ubc1c\ud558\ub294 \uacbd\uc6b0, \ub2e4\ub978 \ud50c\ub7ab\ud3fc\uc5d0\uc11c \uac1c\ubc1c\ud558\ub294 \uacbd\uc6b0 <a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/1.4\/references\/couchbase-lite\/couchbase-lite\/query\/live-query\/index.html\">\ucd94\uac00 \ubcc0\uacbd \ub9ac\uc2a4\ub108<\/a> API\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub7ec\ub098 Couchbase Lite 1.4\uc5d0\uc11c\ub294 \uc774 API\uac00 iOS \ud50c\ub7ab\ud3fc\uc5d0\uc11c \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc73c\uba70, \ub300\uc2e0 iOS\uc758 \ud0a4-\uac12-\uc635\uc800\ubc84 \ud328\ud134\uc744 \ud65c\uc6a9\ud558\uc5ec \ubcc0\uacbd \uc54c\ub9bc\uc744 \ubc1b\uac8c \ub429\ub2c8\ub2e4.<strong>\u00a0<\/strong>\u00a0\ub77c\uc774\ube0c \ucffc\ub9ac \uac1c\uccb4\uc5d0 KVO \uc635\uc800\ubc84\ub97c \ucd94\uac00\ud558\uc5ec \ub77c\uc774\ube0c \ucffc\ub9ac \uac1c\uccb4\uc758 \"\ud589\" \uc18d\uc131\uc5d0 \ub300\ud55c \ubcc0\uacbd \uc0ac\ud56d\uc744 \uad00\ucc30\ud558\uae30 \uc2dc\uc791\ud569\ub2c8\ub2e4.<\/li>\n<li>\ubcc0\ud654 \uad00\ucc30 \uc2dc\uc791<\/li>\n<\/ol>\n<p>LiveQuery \uac1d\uccb4\uc758 \"\ud589\" \uc18d\uc131\uc5d0 \uc601\ud5a5\uc744 \ubbf8\uce58\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \ubcc0\uacbd \uc0ac\ud56d\uc774 \uc788\uc744 \ub54c\ub9c8\ub2e4 \uc571\uc5d0 \ubcc0\uacbd \uc54c\ub9bc\uc774 \uc804\uc1a1\ub429\ub2c8\ub2e4. \ubcc0\uacbd \uc54c\ub9bc\uc744 \ubc1b\uc73c\uba74 UI\ub97c \uc5c5\ub370\uc774\ud2b8\ud560 \uc218 \uc788\uc73c\uba70, \uc774 \uacbd\uc6b0 \ud14c\uc774\ube14 \ubdf0\ub97c \ub2e4\uc2dc \ub85c\ub4dc\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"wrap:true lang:swift decode:true\">override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {\r\n\u00a0 \u00a0 \u00a0 \u00a0 if keyPath == \"rows\" {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 self.docsEnumerator = self.liveQuery?.rows\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 tableView.reloadData()\r\n\u00a0 \u00a0 \u00a0 \u00a0 }\r\n\u00a0 \u00a0 }\r\n<\/pre>\n<h4><\/h4>\n<h4><strong>\ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc0ad\uc81c<\/strong><\/h4>\n<p>\uc5f4\uae30 <em>DBListTableViewController.swift<\/em>\u00a0\u00a0\ud30c\uc77c\uc744 \ucc3e\uc544\u00a0<em>\uc0ad\uc81c \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc778\ub371\uc2a4<\/em>\u00a0\ud568\uc218\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"wrap:true lang:swift decode:true\" title=\"\ub370\uc774\ud130\ubca0\uc774\uc2a4 \ub9cc\ub4e4\uae30\"> do {\r\n        \/\/ 1.  Get handle to database if exists\r\n        let db = try cbManager.existingDatabaseNamed(dbToDelete)\r\n                    \r\n        \/\/ 2. Delete the database\r\n        try db.delete()\r\n                    \r\n        \/\/ 3. update local bookkeeping\r\n        self.dbNames?.remove(at: indexPath.row)\r\n\r\n        \/\/ 4. Update UI\r\n        tableView.deleteRows(at: [indexPath], with: .automatic)\r\n    }\r\n    catch {\r\n         \/\/ handle error\r\n     }<\/pre>\n<p>\ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc0ad\uc81c\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \uac04\ub2e8\ud55c delete() \ud638\ucd9c\uc744 \ud1b5\ud574 \ucc98\ub9ac\ub429\ub2c8\ub2e4.<\/p>\n<h3>\uacb0\ub860<\/h3>\n<p>\ubcf4\uc2dc\ub2e4\uc2dc\ud53c, \ub3c5\ub9bd\ud615 \ubc84\uc804\uc758 Couchbase Lite\ub97c \uc2e0\uaddc \ub610\ub294 \uae30\uc874 iOS \uc571\uc5d0 \ud1b5\ud569\ud558\ub294 \uac83\uc740 \ub9e4\uc6b0 \uac04\ub2e8\ud569\ub2c8\ub2e4. \uc774 \uac8c\uc2dc\ubb3c\uc5d0\uc11c \uc124\uba85\ud55c \uc0d8\ud50c \uc571\uc740 \ub2e4\uc74c \ub9c1\ud06c\uc5d0\uc11c \ub2e4\uc6b4\ub85c\ub4dc\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/github.com\/couchbaselabs\/couchbase-lite-ios-starterapp\">\uae43\ud5c8\ube0c \ub9ac\ud3ec\uc9c0\ud1a0\ub9ac<\/a> \ub97c \ud074\ub9ad\ud558\uace0 \ub2e4\uc591\ud55c \uc778\ud130\ud398\uc774\uc2a4\ub97c \uc0b4\ud3b4\ubcf4\uc138\uc694.  \ub354 \uad81\uae08\ud55c \uc810\uc774 \uc788\uc73c\uba74 \uc5b8\uc81c\ub4e0\uc9c0 \ud2b8\uc704\ud130\ub85c \ubb38\uc758\ud574 \uc8fc\uc138\uc694. <a href=\"https:\/\/twitter.com\/rajagp\">@rajagp<\/a> \ub610\ub294 \uc774\uba54\uc77c\uc744 \ubcf4\ub0b4\uc8fc\uc138\uc694. <a href=\"mailto:priya.rajagopal@couchbase.com\">priya.rajagopal@couchbase.com<\/a>.<\/p>\n<p>\uadf8\ub9ac\uace0 <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/forums\/c\/mobile\/\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ubaa8\ubc14\uc77c \uac1c\ubc1c\uc790 \ud3ec\ub7fc<\/a> \ub294 \ubaa8\ubc14\uc77c \uad00\ub828 \uc9c8\ubb38\uc5d0 \ub300\ud55c \ub2f5\ubcc0\uc744 \uc5bb\uc744 \uc218 \uc788\ub294 \ub610 \ub2e4\ub978 \uc88b\uc740 \uacf3\uc785\ub2c8\ub2e4. \ub610\ud55c <a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/1.4\/whatsnew.html?language=ios\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uac1c\ubc1c\uc790 \ud3ec\ud138<\/a> \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ubaa8\ubc14\uc77c\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\uc138\uc694.<\/p>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>This post looks at\u00a0 how you can get started with\u00a0Couchbase Lite in\u00a0your iOS App. Couchbase Lite is an embedded JSON database that can work standalone, in a P2P network, or with a\u00a0Sync Gateway as a remote endpoint. While we will [&hellip;]<\/p>","protected":false},"author":1423,"featured_media":3217,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,7667,1810,1816,9410],"tags":[1536,1909],"ppma_author":[8948],"class_list":["post-3205","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-lite","category-couchbase-mobile","category-couchbase-server","category-objective-c","tag-ios","tag-swift"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Getting Started with Couchbase Lite in your iOS App : Part1 - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Post discusses getting started with Couchbase Lite in your iOS App. Couchbase Lite is an embedded JSON database that supports multiple configurations\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-lite-embedded-in-ios-app-part1\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Getting Started with Couchbase Lite in your iOS App : Part1\" \/>\n<meta property=\"og:description\" content=\"Post discusses getting started with Couchbase Lite in your iOS App. Couchbase Lite is an embedded JSON database that supports multiple configurations\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-lite-embedded-in-ios-app-part1\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-04-10T17:15:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T04:37:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/CBLite_standalone_featured_Image_blog1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"741\" \/>\n\t<meta property=\"og:image:height\" content=\"399\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Priya Rajagopal, Senior Director, Product Management\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@rajagp\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Priya Rajagopal, Senior Director, Product Management\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-lite-embedded-in-ios-app-part1\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-lite-embedded-in-ios-app-part1\/\"},\"author\":{\"name\":\"Priya Rajagopal, Senior Director, Product Management\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c2da90e57717ee4970c48a87a131ac2c\"},\"headline\":\"Getting Started with Couchbase Lite in your iOS App : Part1\",\"datePublished\":\"2017-04-10T17:15:32+00:00\",\"dateModified\":\"2025-06-14T04:37:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-lite-embedded-in-ios-app-part1\/\"},\"wordCount\":1521,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-lite-embedded-in-ios-app-part1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/CBLite_standalone_featured_Image_blog1.png\",\"keywords\":[\"ios\",\"swift\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Lite\",\"Couchbase Mobile\",\"Couchbase Server\",\"Objective-C\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-lite-embedded-in-ios-app-part1\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-lite-embedded-in-ios-app-part1\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/couchbase-lite-embedded-in-ios-app-part1\/\",\"name\":\"Getting Started with Couchbase Lite in your iOS App : Part1 - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-lite-embedded-in-ios-app-part1\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-lite-embedded-in-ios-app-part1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/CBLite_standalone_featured_Image_blog1.png\",\"datePublished\":\"2017-04-10T17:15:32+00:00\",\"dateModified\":\"2025-06-14T04:37:13+00:00\",\"description\":\"Post discusses getting started with Couchbase Lite in your iOS App. Couchbase Lite is an embedded JSON database that supports multiple configurations\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-lite-embedded-in-ios-app-part1\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-lite-embedded-in-ios-app-part1\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-lite-embedded-in-ios-app-part1\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/CBLite_standalone_featured_Image_blog1.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/CBLite_standalone_featured_Image_blog1.png\",\"width\":741,\"height\":399},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-lite-embedded-in-ios-app-part1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Getting Started with Couchbase Lite in your iOS App : Part1\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c2da90e57717ee4970c48a87a131ac2c\",\"name\":\"Priya Rajagopal, Senior Director, Product Management\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/4b50a54778b979d8c345b036ab138734\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g\",\"caption\":\"Priya Rajagopal, Senior Director, Product Management\"},\"description\":\"Priya Rajagopal is a Senior Director of Product Management at Couchbase responsible for developer platforms for the cloud and the edge. She has been professionally developing software for over 20 years in several technical and product leadership positions, with 10+ years focused on mobile technologies. As a TISPAN IPTV standards delegate, she was a key contributor to the IPTV standards specifications. She has 22 patents in the areas of networking and platform security.\",\"sameAs\":[\"https:\/\/x.com\/rajagp\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/ko\/author\/priya-rajagopalcouchbase-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"iOS \uc571\uc5d0\uc11c \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ub77c\uc774\ud2b8 \uc2dc\uc791\ud558\uae30 : \ud30c\ud2b81 - Couchbase \ube14\ub85c\uadf8","description":"\uc774 \uac8c\uc2dc\ubb3c\uc5d0\uc11c\ub294 iOS \uc571\uc5d0\uc11c Couchbase Lite\ub97c \uc2dc\uc791\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud574 \uc124\uba85\ud569\ub2c8\ub2e4. Couchbase Lite\ub294 \uc5ec\ub7ec \uad6c\uc131\uc744 \uc9c0\uc6d0\ud558\ub294 \uc784\ubca0\ub514\ub4dc JSON \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc785\ub2c8\ub2e4.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-lite-embedded-in-ios-app-part1\/","og_locale":"ko_KR","og_type":"article","og_title":"Getting Started with Couchbase Lite in your iOS App : Part1","og_description":"Post discusses getting started with Couchbase Lite in your iOS App. Couchbase Lite is an embedded JSON database that supports multiple configurations","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-lite-embedded-in-ios-app-part1\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-04-10T17:15:32+00:00","article_modified_time":"2025-06-14T04:37:13+00:00","og_image":[{"width":741,"height":399,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/CBLite_standalone_featured_Image_blog1.png","type":"image\/png"}],"author":"Priya Rajagopal, Senior Director, Product Management","twitter_card":"summary_large_image","twitter_creator":"@rajagp","twitter_misc":{"Written by":"Priya Rajagopal, Senior Director, Product Management","Est. reading time":"9\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-lite-embedded-in-ios-app-part1\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-lite-embedded-in-ios-app-part1\/"},"author":{"name":"Priya Rajagopal, Senior Director, Product Management","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c2da90e57717ee4970c48a87a131ac2c"},"headline":"Getting Started with Couchbase Lite in your iOS App : Part1","datePublished":"2017-04-10T17:15:32+00:00","dateModified":"2025-06-14T04:37:13+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-lite-embedded-in-ios-app-part1\/"},"wordCount":1521,"commentCount":2,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-lite-embedded-in-ios-app-part1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/CBLite_standalone_featured_Image_blog1.png","keywords":["ios","swift"],"articleSection":["Best Practices and Tutorials","Couchbase Lite","Couchbase Mobile","Couchbase Server","Objective-C"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/couchbase-lite-embedded-in-ios-app-part1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-lite-embedded-in-ios-app-part1\/","url":"https:\/\/www.couchbase.com\/blog\/couchbase-lite-embedded-in-ios-app-part1\/","name":"iOS \uc571\uc5d0\uc11c \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ub77c\uc774\ud2b8 \uc2dc\uc791\ud558\uae30 : \ud30c\ud2b81 - Couchbase \ube14\ub85c\uadf8","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-lite-embedded-in-ios-app-part1\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-lite-embedded-in-ios-app-part1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/CBLite_standalone_featured_Image_blog1.png","datePublished":"2017-04-10T17:15:32+00:00","dateModified":"2025-06-14T04:37:13+00:00","description":"\uc774 \uac8c\uc2dc\ubb3c\uc5d0\uc11c\ub294 iOS \uc571\uc5d0\uc11c Couchbase Lite\ub97c \uc2dc\uc791\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud574 \uc124\uba85\ud569\ub2c8\ub2e4. Couchbase Lite\ub294 \uc5ec\ub7ec \uad6c\uc131\uc744 \uc9c0\uc6d0\ud558\ub294 \uc784\ubca0\ub514\ub4dc JSON \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc785\ub2c8\ub2e4.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-lite-embedded-in-ios-app-part1\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-lite-embedded-in-ios-app-part1\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-lite-embedded-in-ios-app-part1\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/CBLite_standalone_featured_Image_blog1.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/CBLite_standalone_featured_Image_blog1.png","width":741,"height":399},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-lite-embedded-in-ios-app-part1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Getting Started with Couchbase Lite in your iOS App : Part1"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","description":"NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4, Couchbase","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c2da90e57717ee4970c48a87a131ac2c","name":"\ud504\ub9ac\uc57c \ub77c\uc790\uace0\ud314, \uc81c\ud488 \uad00\ub9ac \ubd80\ubb38 \uc120\uc784 \uc774\uc0ac","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/4b50a54778b979d8c345b036ab138734","url":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g","caption":"Priya Rajagopal, Senior Director, Product Management"},"description":"\ud504\ub9ac\uc57c \ub77c\uc790\uace0\ud314\uc740 \ud074\ub77c\uc6b0\ub4dc \ubc0f \uc5e3\uc9c0\uc6a9 \uac1c\ubc1c\uc790 \ud50c\ub7ab\ud3fc\uc744 \ub2f4\ub2f9\ud558\ub294 Couchbase\uc758 \uc81c\ud488 \uad00\ub9ac \uc218\uc11d \uc774\uc0ac\uc785\ub2c8\ub2e4. \uadf8\ub140\ub294 20\ub144 \uc774\uc0c1 \uc5ec\ub7ec \uae30\uc220 \ubc0f \uc81c\ud488 \ub9ac\ub354\uc2ed \uc9c1\ucc45\uc744 \ub9e1\uc73c\uba70 \uc804\ubb38\uc801\uc73c\ub85c \uc18c\ud504\ud2b8\uc6e8\uc5b4\ub97c \uac1c\ubc1c\ud574 \uc654\uc73c\uba70, \uadf8\uc911 10\ub144 \uc774\uc0c1\uc740 \ubaa8\ubc14\uc77c \uae30\uc220\uc5d0 \uc9d1\uc911\ud588\uc2b5\ub2c8\ub2e4. TISPAN IPTV \ud45c\uc900 \ub300\ud45c\ub85c\uc11c IPTV \ud45c\uc900 \uc0ac\uc591\uc5d0 \ud575\uc2ec\uc801\uc778 \uae30\uc5ec\ub97c \ud588\uc2b5\ub2c8\ub2e4. \ub124\ud2b8\uc6cc\ud0b9 \ubc0f \ud50c\ub7ab\ud3fc \ubcf4\uc548 \ubd84\uc57c\uc5d0\uc11c 22\uac1c\uc758 \ud2b9\ud5c8\ub97c \ubcf4\uc720\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.","sameAs":["https:\/\/x.com\/rajagp"],"url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/priya-rajagopalcouchbase-com\/"}]}},"authors":[{"term_id":8948,"user_id":1423,"is_guest":0,"slug":"priya-rajagopalcouchbase-com","display_name":"Priya Rajagopal, Senior Director, Product Management","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g","author_category":"","last_name":"Rajagopal, Senior Director, Product Management","first_name":"Priya","job_title":"","user_url":"","description":"\ud504\ub9ac\uc57c \ub77c\uc790\uace0\ud314\uc740 \ud074\ub77c\uc6b0\ub4dc \ubc0f \uc5e3\uc9c0\uc6a9 \uac1c\ubc1c\uc790 \ud50c\ub7ab\ud3fc\uc744 \ub2f4\ub2f9\ud558\ub294 Couchbase\uc758 \uc81c\ud488 \uad00\ub9ac \uc218\uc11d \uc774\uc0ac\uc785\ub2c8\ub2e4. \uadf8\ub140\ub294 20\ub144 \uc774\uc0c1 \uc5ec\ub7ec \uae30\uc220 \ubc0f \uc81c\ud488 \ub9ac\ub354\uc2ed \uc9c1\ucc45\uc744 \ub9e1\uc73c\uba70 \uc804\ubb38\uc801\uc73c\ub85c \uc18c\ud504\ud2b8\uc6e8\uc5b4\ub97c \uac1c\ubc1c\ud574 \uc654\uc73c\uba70, \uadf8\uc911 10\ub144 \uc774\uc0c1\uc740 \ubaa8\ubc14\uc77c \uae30\uc220\uc5d0 \uc9d1\uc911\ud588\uc2b5\ub2c8\ub2e4. TISPAN IPTV \ud45c\uc900 \ub300\ud45c\ub85c\uc11c IPTV \ud45c\uc900 \uc0ac\uc591\uc5d0 \ud575\uc2ec\uc801\uc778 \uae30\uc5ec\ub97c \ud588\uc2b5\ub2c8\ub2e4. \ub124\ud2b8\uc6cc\ud0b9 \ubc0f \ud50c\ub7ab\ud3fc \ubcf4\uc548 \ubd84\uc57c\uc5d0\uc11c 22\uac1c\uc758 \ud2b9\ud5c8\ub97c \ubcf4\uc720\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/3205","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/users\/1423"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=3205"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/3205\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/3217"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=3205"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=3205"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=3205"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=3205"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}