{"id":3004,"date":"2025-11-12T11:16:56","date_gmt":"2025-11-12T04:16:56","guid":{"rendered":"https:\/\/portal-atlasx.cdg.co.th\/home\/?post_type=docs&#038;p=3004"},"modified":"2025-11-12T11:16:56","modified_gmt":"2025-11-12T04:16:56","slug":"offline","status":"publish","type":"docs","link":"https:\/\/portal-atlasx.cdg.co.th\/home\/docs\/ios\/arcgis\/offline\/","title":{"rendered":"Offline"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\" id=\"offline\">Offline<\/h1>\n\n\n\n<p>\u0e43\u0e19\u0e04\u0e25\u0e32\u0e2a\u0e19\u0e35\u0e49\u0e08\u0e30\u0e43\u0e0a\u0e49 Library \u0e08\u0e32\u0e01&nbsp;<a href=\"https:\/\/github.com\/SwiftyJSON\/SwiftyJSON\" target=\"_blank\" rel=\"noreferrer noopener\">SwiftyJSON<\/a>&nbsp;\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07 Model \u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e43\u0e19\u0e01\u0e32\u0e23 Sync<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"layeroption\">LayerOption<\/h2>\n\n\n\n<p>Model \u0e02\u0e2d\u0e07 Condition \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23 Generate Geodatabase<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Fira-Code\" style=\"font-size:.875rem;font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#000000;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>struct LayerOption {\n    let layerID: Int\n    let whereClause: String\n    \n    public init(layerID: Int,\n                whereClause: String) {\n        self.layerID = layerID\n        self.whereClause = whereClause\n    }\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki light-plus\" style=\"background-color: #FFFFFF\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #001080\">struct<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">LayerOption<\/span><span style=\"color: #000000\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #0000FF\">let<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">layerID<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #267F99\">Int<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #0000FF\">let<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">whereClause<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #267F99\">String<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #001080\">public<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #795E26\">init<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #001080\">layerID<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #001080\">Int<\/span><span style=\"color: #000000\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">                <\/span><span style=\"color: #001080\">whereClause<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #001080\">String<\/span><span style=\"color: #000000\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        <\/span><span style=\"color: #001080\">self<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #001080\">layerID<\/span><span style=\"color: #000000\"> = <\/span><span style=\"color: #001080\">layerID<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        <\/span><span style=\"color: #001080\">self<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #001080\">whereClause<\/span><span style=\"color: #000000\"> = <\/span><span style=\"color: #001080\">whereClause<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"properties\">Properties<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Name<\/th><th>Description<\/th><th>Type<\/th><\/tr><\/thead><tbody><tr><td>layerID<\/td><td>ID \u0e02\u0e2d\u0e07 Layer \u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23 Generate Geodatabase<\/td><td>Int<\/td><\/tr><tr><td>whereClause<\/td><td>WhereClause \u0e02\u0e2d\u0e07 Layer \u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23 Generate Geodatabase<\/td><td>String<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"transactiontype\">TransactionType<\/h2>\n\n\n\n<p>\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e02\u0e2d\u0e07 Transaction \u0e17\u0e35\u0e48\u0e08\u0e30\u0e17\u0e33\u0e01\u0e32\u0e23 Sync<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Fira-Code\" style=\"font-size:.875rem;font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#000000;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>enum TransactionType: String, Codable {\n    case sp = \"SP\"\n    case file = \"FILE\"\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki light-plus\" style=\"background-color: #FFFFFF\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #0000FF\">enum<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #267F99\">TransactionType<\/span><span style=\"color: #000000\">: String, Codable {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #0070C1\">case<\/span><span style=\"color: #000000\"> sp = <\/span><span style=\"color: #A31515\">&quot;SP&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #0070C1\">case<\/span><span style=\"color: #000000\"> file = <\/span><span style=\"color: #A31515\">&quot;FILE&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Name<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>sp<\/td><td>Transaction \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e01 Store Procedure<\/td><\/tr><tr><td>file<\/td><td>Transaction \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23 Upload File<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"transaction\">Transaction<\/h2>\n\n\n\n<p>Model \u0e02\u0e2d\u0e07 Transaction \u0e17\u0e35\u0e48\u0e08\u0e30\u0e17\u0e33\u0e01\u0e32\u0e23 Sync \u0e42\u0e14\u0e22 Transaction \u0e2b\u0e21\u0e32\u0e22\u0e16\u0e36\u0e07 \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e07\u0e32\u0e19\u0e02\u0e2d\u0e07\u0e41\u0e15\u0e48\u0e25\u0e30\u0e43\u0e1a\u0e07\u0e32\u0e19<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Fira-Code\" style=\"font-size:.875rem;font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#000000;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>struct Transaction&lt;T: Codable>: Codable {\n    public var transactionID: Int\n    public var transactionType: TransactionType\n    public var parameters: T\n    \n    enum CodingKeys: String, CodingKey {\n        case transactionID = \"TRANSACTION_ID\"\n        case transactionType = \"TRANSACTION_TYPE\"\n        case parameters = \"PARAMETERS\"\n    }\n    \n    public init(transactionID: Int,\n                transactionType: TransactionType,\n                parameters: T) {\n        self.transactionID = transactionID\n        self.transactionType = transactionType\n        self.parameters = parameters\n    }\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki light-plus\" style=\"background-color: #FFFFFF\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #001080\">struct<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">Transaction<\/span><span style=\"color: #000000\">&lt;T: <\/span><span style=\"color: #001080\">Codable<\/span><span style=\"color: #000000\">&gt;: <\/span><span style=\"color: #001080\">Codable<\/span><span style=\"color: #000000\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #001080\">public<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">var<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">transactionID<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #267F99\">Int<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #001080\">public<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">var<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">transactionType<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #267F99\">TransactionType<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #001080\">public<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">var<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">parameters<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #267F99\">T<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #0000FF\">enum<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #267F99\">CodingKeys<\/span><span style=\"color: #000000\">: String, CodingKey {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        <\/span><span style=\"color: #0070C1\">case<\/span><span style=\"color: #000000\"> transactionID = <\/span><span style=\"color: #A31515\">&quot;TRANSACTION_ID&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        <\/span><span style=\"color: #0070C1\">case<\/span><span style=\"color: #000000\"> transactionType = <\/span><span style=\"color: #A31515\">&quot;TRANSACTION_TYPE&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        <\/span><span style=\"color: #0070C1\">case<\/span><span style=\"color: #000000\"> parameters = <\/span><span style=\"color: #A31515\">&quot;PARAMETERS&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #001080\">public<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #795E26\">init<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #001080\">transactionID<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #001080\">Int<\/span><span style=\"color: #000000\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">                <\/span><span style=\"color: #001080\">transactionType<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #001080\">TransactionType<\/span><span style=\"color: #000000\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">                <\/span><span style=\"color: #001080\">parameters<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #0070C1\">T<\/span><span style=\"color: #000000\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        <\/span><span style=\"color: #001080\">self<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #001080\">transactionID<\/span><span style=\"color: #000000\"> = <\/span><span style=\"color: #001080\">transactionID<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        <\/span><span style=\"color: #001080\">self<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #001080\">transactionType<\/span><span style=\"color: #000000\"> = <\/span><span style=\"color: #001080\">transactionType<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        <\/span><span style=\"color: #001080\">self<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #001080\">parameters<\/span><span style=\"color: #000000\"> = <\/span><span style=\"color: #001080\">parameters<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"properties-1\">Properties<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Name<\/th><th>Description<\/th><th>Type<\/th><\/tr><\/thead><tbody><tr><td>T<\/td><td>Class \u0e02\u0e2d\u0e07 Parameters \u0e17\u0e35\u0e48\u0e08\u0e30\u0e17\u0e33\u0e01\u0e32\u0e23 Sync<\/td><td>Class<\/td><\/tr><tr><td>transactionID<\/td><td>ID \u0e02\u0e2d\u0e07 Transaction \u0e17\u0e35\u0e48\u0e08\u0e30\u0e17\u0e33\u0e01\u0e32\u0e23 Sync<\/td><td>Integer<\/td><\/tr><tr><td>transactionType<\/td><td>\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e02\u0e2d\u0e07 Transaction<\/td><td>TransactionType<\/td><\/tr><tr><td>parameters<\/td><td>Parameters \u0e17\u0e35\u0e48\u0e08\u0e30\u0e17\u0e33\u0e01\u0e32\u0e23 Sync<\/td><td>T<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"filetransaction\">FileTransaction<\/h2>\n\n\n\n<p>Model \u0e02\u0e2d\u0e07 Transaction \u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17 File \u0e17\u0e35\u0e48\u0e08\u0e30\u0e17\u0e33\u0e01\u0e32\u0e23 Sync<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Fira-Code\" style=\"font-size:.875rem;font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#000000;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>struct FileTransaction: Codable {\n    let sourcePath: String\n    let sourceFile: String\n    let destinationPath: String\n    let destinationFile: String\n    \n    enum CodingKeys: String, CodingKey {\n        case sourcePath = \"SOURCE_PATH\"\n        case sourceFile = \"SOURCE_FILE\"\n        case destinationPath = \"DESTINATION_PATH\"\n        case destinationFile = \"DESTINATION_FILE\"\n    }\n    \n    public init(sourcePath: String, sourceFile: String, destinationPath: String, destinationFile: String) {\n        self.sourcePath = sourcePath\n        self.sourceFile = sourceFile\n        self.destinationPath = destinationPath\n        self.destinationFile = destinationFile\n    }\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki light-plus\" style=\"background-color: #FFFFFF\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #001080\">struct<\/span><span style=\"color: #000000\"> FileTransaction: <\/span><span style=\"color: #001080\">Codable<\/span><span style=\"color: #000000\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #0000FF\">let<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">sourcePath<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #267F99\">String<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #0000FF\">let<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">sourceFile<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #267F99\">String<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #0000FF\">let<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">destinationPath<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #267F99\">String<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #0000FF\">let<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">destinationFile<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #267F99\">String<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #0000FF\">enum<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #267F99\">CodingKeys<\/span><span style=\"color: #000000\">: String, CodingKey {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        <\/span><span style=\"color: #0070C1\">case<\/span><span style=\"color: #000000\"> sourcePath = <\/span><span style=\"color: #A31515\">&quot;SOURCE_PATH&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        <\/span><span style=\"color: #0070C1\">case<\/span><span style=\"color: #000000\"> sourceFile = <\/span><span style=\"color: #A31515\">&quot;SOURCE_FILE&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        <\/span><span style=\"color: #0070C1\">case<\/span><span style=\"color: #000000\"> destinationPath = <\/span><span style=\"color: #A31515\">&quot;DESTINATION_PATH&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        <\/span><span style=\"color: #0070C1\">case<\/span><span style=\"color: #000000\"> destinationFile = <\/span><span style=\"color: #A31515\">&quot;DESTINATION_FILE&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #001080\">public<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #795E26\">init<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #001080\">sourcePath<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #001080\">String<\/span><span style=\"color: #000000\">, <\/span><span style=\"color: #001080\">sourceFile<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #001080\">String<\/span><span style=\"color: #000000\">, <\/span><span style=\"color: #001080\">destinationPath<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #001080\">String<\/span><span style=\"color: #000000\">, <\/span><span style=\"color: #001080\">destinationFile<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #001080\">String<\/span><span style=\"color: #000000\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        <\/span><span style=\"color: #001080\">self<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #001080\">sourcePath<\/span><span style=\"color: #000000\"> = <\/span><span style=\"color: #001080\">sourcePath<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        <\/span><span style=\"color: #001080\">self<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #001080\">sourceFile<\/span><span style=\"color: #000000\"> = <\/span><span style=\"color: #001080\">sourceFile<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        <\/span><span style=\"color: #001080\">self<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #001080\">destinationPath<\/span><span style=\"color: #000000\"> = <\/span><span style=\"color: #001080\">destinationPath<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        <\/span><span style=\"color: #001080\">self<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #001080\">destinationFile<\/span><span style=\"color: #000000\"> = <\/span><span style=\"color: #001080\">destinationFile<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"properties-2\">Properties<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Name<\/th><th>Description<\/th><th>Type<\/th><\/tr><\/thead><tbody><tr><td>sourcePath<\/td><td>Path \u0e02\u0e2d\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e08\u0e30\u0e17\u0e33\u0e01\u0e32\u0e23\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01<\/td><td>String<\/td><\/tr><tr><td>sourceFile<\/td><td>\u0e0a\u0e37\u0e48\u0e2d\u0e02\u0e2d\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e08\u0e30\u0e17\u0e33\u0e01\u0e32\u0e23\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01<\/td><td>String<\/td><\/tr><tr><td>destinationPath<\/td><td>Path \u0e17\u0e35\u0e48\u0e08\u0e30\u0e17\u0e33\u0e01\u0e32\u0e23\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e44\u0e1f\u0e25\u0e4c<\/td><td>String<\/td><\/tr><tr><td>destinationFile<\/td><td>\u0e0a\u0e37\u0e48\u0e2d\u0e02\u0e2d\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e43\u0e2b\u0e21\u0e48\u0e17\u0e35\u0e48\u0e08\u0e30\u0e17\u0e33\u0e01\u0e32\u0e23\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01<\/td><td>String<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"filedata\">FileData<\/h2>\n\n\n\n<p>Model \u0e02\u0e2d\u0e07 File \u0e17\u0e35\u0e48\u0e08\u0e30\u0e17\u0e33\u0e01\u0e32\u0e23 Sync<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Fira-Code\" style=\"font-size:.875rem;font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#000000;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>struct FileData {\n    let data: Data\n    let fileName: String\n    let fileDirectory: String?\n    \n    public init(data: Data, fileName: String, fileDirectory: String? = nil) {\n        self.data = data\n        self.fileName = fileName\n        self.fileDirectory = fileDirectory\n    }\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki light-plus\" style=\"background-color: #FFFFFF\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #001080\">struct<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">FileData<\/span><span style=\"color: #000000\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #0000FF\">let<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">data<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #267F99\">Data<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #0000FF\">let<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">fileName<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #267F99\">String<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #0000FF\">let<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">fileDirectory<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #267F99\">String<\/span><span style=\"color: #000000\">?<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #001080\">public<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #795E26\">init<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #001080\">data<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #001080\">Data<\/span><span style=\"color: #000000\">, <\/span><span style=\"color: #001080\">fileName<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #001080\">String<\/span><span style=\"color: #000000\">, <\/span><span style=\"color: #001080\">fileDirectory<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #001080\">String<\/span><span style=\"color: #000000\">? = <\/span><span style=\"color: #001080\">nil<\/span><span style=\"color: #000000\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        self.<\/span><span style=\"color: #001080\">data<\/span><span style=\"color: #000000\"> = <\/span><span style=\"color: #001080\">data<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        self.<\/span><span style=\"color: #001080\">fileName<\/span><span style=\"color: #000000\"> = <\/span><span style=\"color: #001080\">fileName<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        self.<\/span><span style=\"color: #001080\">fileDirectory<\/span><span style=\"color: #000000\"> = <\/span><span style=\"color: #001080\">fileDirectory<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"properties-3\">Properties<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Name<\/th><th>Description<\/th><th>Type<\/th><\/tr><\/thead><tbody><tr><td>data<\/td><td>\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23 Sync<\/td><td>Data<\/td><\/tr><tr><td>fileName<\/td><td>\u0e0a\u0e37\u0e48\u0e2d\u0e02\u0e2d\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23 Sync<\/td><td>String<\/td><\/tr><tr><td>fileDirectory<\/td><td>Directory \u0e02\u0e2d\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e19\u0e33\u0e44\u0e1b\u0e27\u0e32\u0e07<\/td><td>Optional(String)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"work\">Work<\/h2>\n\n\n\n<p>Model \u0e02\u0e2d\u0e07 Work \u0e17\u0e35\u0e48\u0e08\u0e30\u0e17\u0e33\u0e01\u0e32\u0e23 Sync \u0e42\u0e14\u0e22 Work \u0e2b\u0e21\u0e32\u0e22\u0e16\u0e36\u0e07 \u0e43\u0e1a\u0e07\u0e32\u0e19\u0e41\u0e15\u0e48\u0e25\u0e30\u0e43\u0e1a\u0e07\u0e32\u0e19<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Fira-Code\" style=\"font-size:.875rem;font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#000000;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>struct Work: Codable {\n    public var workID: Int\n    public var transactions: &#91;JSON&#93;\n    \n    enum CodingKeys: String, CodingKey {\n        case workID = \"WORK_ID\"\n        case transactions = \"TRANSACTIONS\"\n    }\n    \n    public init(workID: Int,\n                transactions: &#91;JSON&#93;) {\n        self.workID = workID\n        self.transactions = transactions\n    }\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki light-plus\" style=\"background-color: #FFFFFF\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #001080\">struct<\/span><span style=\"color: #000000\"> Work: <\/span><span style=\"color: #001080\">Codable<\/span><span style=\"color: #000000\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #001080\">public<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">var<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">workID<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #267F99\">Int<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #001080\">public<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">var<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">transactions<\/span><span style=\"color: #000000\">: &#91;<\/span><span style=\"color: #267F99\">JSON<\/span><span style=\"color: #000000\">&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #0000FF\">enum<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #267F99\">CodingKeys<\/span><span style=\"color: #000000\">: String, CodingKey {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        <\/span><span style=\"color: #0070C1\">case<\/span><span style=\"color: #000000\"> workID = <\/span><span style=\"color: #A31515\">&quot;WORK_ID&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        <\/span><span style=\"color: #0070C1\">case<\/span><span style=\"color: #000000\"> transactions = <\/span><span style=\"color: #A31515\">&quot;TRANSACTIONS&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #001080\">public<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #795E26\">init<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #001080\">workID<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #001080\">Int<\/span><span style=\"color: #000000\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">                <\/span><span style=\"color: #001080\">transactions<\/span><span style=\"color: #000000\">: &#91;<\/span><span style=\"color: #0070C1\">JSON<\/span><span style=\"color: #000000\">&#93;) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        <\/span><span style=\"color: #001080\">self<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #001080\">workID<\/span><span style=\"color: #000000\"> = <\/span><span style=\"color: #001080\">workID<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        <\/span><span style=\"color: #001080\">self<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #001080\">transactions<\/span><span style=\"color: #000000\"> = <\/span><span style=\"color: #001080\">transactions<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"properties-4\">Properties<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Name<\/th><th>Description<\/th><th>Type<\/th><\/tr><\/thead><tbody><tr><td>workID<\/td><td>ID \u0e02\u0e2d\u0e07 Work \u0e17\u0e35\u0e48\u0e08\u0e30\u0e17\u0e33\u0e01\u0e32\u0e23 Sync<\/td><td>Int<\/td><\/tr><tr><td>transactions<\/td><td>Transaction \u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e02\u0e2d\u0e07 Work \u0e17\u0e35\u0e48\u0e08\u0e30\u0e17\u0e33\u0e01\u0e32\u0e23 Sync<\/td><td>Array(JSON)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"class-offline\">Class Offline<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"method-overview\">Method Overview<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Name<\/th><th>Description<\/th><th>Return<\/th><\/tr><\/thead><tbody><tr><td>generateGeodatabase()<\/td><td>\u0e01\u0e32\u0e23 Generate Geodatabase \u0e41\u0e25\u0e49\u0e27\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e44\u0e27\u0e49\u0e43\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07<\/td><td>void<\/td><\/tr><tr><td>clearGeodatabase()<\/td><td>\u0e01\u0e32\u0e23 Clear Geodatabase \u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e20\u0e32\u0e22\u0e43\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07<\/td><td>void<\/td><\/tr><tr><td>syncData()<\/td><td>\u0e01\u0e32\u0e23 Sync \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 MIS \u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e44\u0e1b\u0e22\u0e31\u0e07 Web Service<\/td><td>void<\/td><\/tr><tr><td>generateWork()<\/td><td>\u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07 Object \u0e02\u0e2d\u0e07 Work \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23 Sync<\/td><td>Optional(Work)<\/td><\/tr><tr><td>getFeatureLayers()<\/td><td>\u0e01\u0e32\u0e23\u0e14\u0e36\u0e07 FeatureLayer \u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e08\u0e32\u0e01 Geodatabase<\/td><td>void<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"method-details\">Method Details<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Fira-Code\" style=\"font-size:.875rem;font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#000000;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>static func generateGeodatabase(layerOptions layers: &#91;LayerOption&#93;,\n                                extent: AGSEnvelope,\n                                url: URL,\n                                nameOfGeodatabase: String = UUID().uuidString,\n                                completion: @escaping (Error?, AGSGeodatabase?) -> Void)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki light-plus\" style=\"background-color: #FFFFFF\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #001080\">static<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">func<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #795E26\">generateGeodatabase<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #001080\">layerOptions<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">layers<\/span><span style=\"color: #000000\">: &#91;<\/span><span style=\"color: #001080\">LayerOption<\/span><span style=\"color: #000000\">&#93;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">                                <\/span><span style=\"color: #001080\">extent<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #001080\">AGSEnvelope<\/span><span style=\"color: #000000\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">                                <\/span><span style=\"color: #001080\">url<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #0070C1\">URL<\/span><span style=\"color: #000000\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">                                <\/span><span style=\"color: #001080\">nameOfGeodatabase<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #001080\">String<\/span><span style=\"color: #000000\"> = <\/span><span style=\"color: #795E26\">UUID<\/span><span style=\"color: #000000\">().<\/span><span style=\"color: #001080\">uuidString<\/span><span style=\"color: #000000\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">                                <\/span><span style=\"color: #001080\">completion<\/span><span style=\"color: #000000\">: @<\/span><span style=\"color: #795E26\">escaping<\/span><span style=\"color: #000000\"> (<\/span><span style=\"color: #001080\">Error<\/span><span style=\"color: #000000\">?, <\/span><span style=\"color: #001080\">AGSGeodatabase<\/span><span style=\"color: #000000\">?) -&gt; <\/span><span style=\"color: #001080\">Void<\/span><span style=\"color: #000000\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\u0e01\u0e32\u0e23 Generate Geodatabase \u0e41\u0e25\u0e49\u0e27\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e44\u0e27\u0e49\u0e43\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"parameters\">Parameters<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Name<\/th><th>Description<\/th><th>Type<\/th><\/tr><\/thead><tbody><tr><td>layerOptions<\/td><td>Array \u0e02\u0e2d\u0e07 Condition \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23 Generate Geodatabase<\/td><td>Array(LayerOption)<\/td><\/tr><tr><td>extent<\/td><td>Extent \u0e02\u0e2d\u0e07 Layer \u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07 Geodatabase<\/td><td>AGSEnvelope<\/td><\/tr><tr><td>url<\/td><td>URL \u0e02\u0e2d\u0e07 Map Service<\/td><td>URL<\/td><\/tr><tr><td>nameOfGeodatabase<\/td><td>\u0e0a\u0e37\u0e48\u0e2d\u0e02\u0e2d\u0e07 Geodatabase \u0e17\u0e35\u0e48\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01<\/td><td>String<\/td><\/tr><tr><td>completion<\/td><td>Callback \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e2a\u0e23\u0e49\u0e32\u0e07 Geodatabase \u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08<\/td><td>Completion<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Fira-Code\" style=\"font-size:.875rem;font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#000000;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>static func clearGeodatabase()<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki light-plus\" style=\"background-color: #FFFFFF\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #001080\">static<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">func<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #795E26\">clearGeodatabase<\/span><span style=\"color: #000000\">()<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\u0e01\u0e32\u0e23 Clear Geodatabase \u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e20\u0e32\u0e22\u0e43\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Fira-Code\" style=\"font-size:.875rem;font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#000000;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>static func syncData(works: &#91;Work&#93;,\n                     files: &#91;FileData&#93; = [],\n                     parameters: &#91;String: Any&#93; = &#91;:&#93;,\n                     userID: String,\n                     appFileSource: String = \"Default\",\n                     appFilePath: String = \"Sync\",\n                     completion: @escaping (Error?, &#91;String: Any&#93;?) -> Void)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki light-plus\" style=\"background-color: #FFFFFF\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #001080\">static<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">func<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #795E26\">syncData<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #001080\">works<\/span><span style=\"color: #000000\">: &#91;<\/span><span style=\"color: #001080\">Work<\/span><span style=\"color: #000000\">&#93;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">                     <\/span><span style=\"color: #001080\">files<\/span><span style=\"color: #000000\">: &#91;<\/span><span style=\"color: #001080\">FileData<\/span><span style=\"color: #000000\">&#93; = [],<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">                     <\/span><span style=\"color: #001080\">parameters<\/span><span style=\"color: #000000\">: &#91;<\/span><span style=\"color: #001080\">String<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #001080\">Any<\/span><span style=\"color: #000000\">&#93; = &#91;:&#93;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">                     <\/span><span style=\"color: #001080\">userID<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #001080\">String<\/span><span style=\"color: #000000\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">                     <\/span><span style=\"color: #001080\">appFileSource<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #001080\">String<\/span><span style=\"color: #000000\"> = <\/span><span style=\"color: #A31515\">&quot;Default&quot;<\/span><span style=\"color: #000000\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">                     <\/span><span style=\"color: #001080\">appFilePath<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #001080\">String<\/span><span style=\"color: #000000\"> = <\/span><span style=\"color: #A31515\">&quot;Sync&quot;<\/span><span style=\"color: #000000\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">                     <\/span><span style=\"color: #001080\">completion<\/span><span style=\"color: #000000\">: @<\/span><span style=\"color: #795E26\">escaping<\/span><span style=\"color: #000000\"> (<\/span><span style=\"color: #001080\">Error<\/span><span style=\"color: #000000\">?, &#91;<\/span><span style=\"color: #001080\">String<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #001080\">Any<\/span><span style=\"color: #000000\">&#93;?) -&gt; <\/span><span style=\"color: #001080\">Void<\/span><span style=\"color: #000000\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\u0e01\u0e32\u0e23 Sync \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 MIS \u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e44\u0e1b\u0e22\u0e31\u0e07 Web Service<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"parameters-1\">Parameters<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Name<\/th><th>Description<\/th><th>Type<\/th><\/tr><\/thead><tbody><tr><td>works<\/td><td>Work \u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23 Sync<\/td><td>Array(Work)<\/td><\/tr><tr><td>files<\/td><td>File \u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23 Sync<\/td><td>Array(FileData)<\/td><\/tr><tr><td>parameters<\/td><td>Parameter \u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e2a\u0e48\u0e07\u0e44\u0e1b\u0e22\u0e31\u0e07 Web Service<\/td><td>Dictionary<\/td><\/tr><tr><td>userID<\/td><td>ID \u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19<\/td><td>String<\/td><\/tr><tr><td>appFileSource<\/td><td>Source \u0e02\u0e2d\u0e07\u0e44\u0e1f\u0e25\u0e4c<\/td><td>String<\/td><\/tr><tr><td>appFilePath<\/td><td>Path \u0e02\u0e2d\u0e07\u0e44\u0e1f\u0e25\u0e4c<\/td><td>String<\/td><\/tr><tr><td>completion<\/td><td>Callback \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e17\u0e33\u0e01\u0e32\u0e23 Sync \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08<\/td><td>Completion<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Fira-Code\" style=\"font-size:.875rem;font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#000000;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>static func generateWork(workID: Int, transactions: &#91;Any&#93;) -> Work?<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki light-plus\" style=\"background-color: #FFFFFF\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #001080\">static<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">func<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #795E26\">generateWork<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #001080\">workID<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #001080\">Int<\/span><span style=\"color: #000000\">, <\/span><span style=\"color: #001080\">transactions<\/span><span style=\"color: #000000\">: &#91;<\/span><span style=\"color: #001080\">Any<\/span><span style=\"color: #000000\">&#93;) -&gt; <\/span><span style=\"color: #001080\">Work<\/span><span style=\"color: #000000\">?<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07 Object \u0e02\u0e2d\u0e07 Work \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23 Sync<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"parameters-2\">Parameters<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Name<\/th><th>Description<\/th><th>Type<\/th><\/tr><\/thead><tbody><tr><td>workID<\/td><td>ID \u0e02\u0e2d\u0e07\u0e43\u0e1a\u0e07\u0e32\u0e19<\/td><td>Integer<\/td><\/tr><tr><td>transactions<\/td><td>\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e07\u0e32\u0e19\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e02\u0e2d\u0e07\u0e43\u0e1a\u0e07\u0e32\u0e19<\/td><td>Array(Any)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"returns\">Returns<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Type<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>Optional(Work)<\/td><td>Return \u0e43\u0e1a\u0e07\u0e32\u0e19<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Fira-Code\" style=\"font-size:.875rem;font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#000000;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>static func getFeatureLayers(geodatabase: AGSGeodatabase, completion: @escaping (Error?, &#91;AGSFeatureLayer&#93;?) -> Void)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki light-plus\" style=\"background-color: #FFFFFF\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #001080\">static<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">func<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #795E26\">getFeatureLayers<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #001080\">geodatabase<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #001080\">AGSGeodatabase<\/span><span style=\"color: #000000\">, <\/span><span style=\"color: #001080\">completion<\/span><span style=\"color: #000000\">: @<\/span><span style=\"color: #795E26\">escaping<\/span><span style=\"color: #000000\"> (<\/span><span style=\"color: #001080\">Error<\/span><span style=\"color: #000000\">?, &#91;<\/span><span style=\"color: #001080\">AGSFeatureLayer<\/span><span style=\"color: #000000\">&#93;?) -&gt; <\/span><span style=\"color: #001080\">Void<\/span><span style=\"color: #000000\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\u0e01\u0e32\u0e23\u0e14\u0e36\u0e07 FeatureLayer \u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e08\u0e32\u0e01 Geodatabase<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"parameters-3\">Parameters<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Name<\/th><th>Description<\/th><th>Type<\/th><\/tr><\/thead><tbody><tr><td>geodatabase<\/td><td>Geodatabase \u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e14\u0e36\u0e07 FeatureLayer<\/td><td>AGSGeodatabase<\/td><\/tr><tr><td>completion<\/td><td>Callback \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e01\u0e32\u0e23\u0e14\u0e36\u0e07 FeatureLayer \u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08<\/td><td>Completion<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"example\">Example<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Fira-Code\" style=\"font-size:.875rem;font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#000000;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>&lt;em>\/\/ Your Store Procedure Model&lt;\/em>\nstruct DataModel: Codable {\n    let appDataProcudure: String = \"TEST_SYNC_OFFLINE_I\"\n    let name: String\n    let value: String\n    \n    enum CodingKeys: String, CodingKey {\n        case appDataProcudure = \"APP_DATA_PROCEDURE\"\n        case name = \"NAME\"\n        case value = \"VALUE\"\n    }\n}\n\n&lt;em>\/\/ Initial Your Store Procedure Model&lt;\/em>\nlet dataModel = DataModel(name: \"Sira\", value: \"test\")\n&lt;em>\/\/ Initial Transaction for Your Store Procedure Model&lt;\/em>\nlet transaction = Transaction(transactionID: 1, \n                              transactionType: .sp, \n                              parameters: dataModel)\n\n&lt;em>\/\/ Initial File Transaction Model&lt;\/em>\nlet file = FileTransaction(sourcePath: \"Sync\/Files\/work_1\", \n                           sourceFile: \"Person.jpg\", \n                           destinationPath: \"Work\/work_1\", \n                           destinationFile: \"Person.jpg\")\n&lt;em>\/\/ Initial Transaction for File&lt;\/em>\nlet transactionFile = Transaction(transactionID: 2, \n                                  transactionType: .file, \n                                  parameters: file)\n\n&lt;em>\/\/ Get File data for sync&lt;\/em>\nvar fileDatas: &#91;FileData&#93; = []\nif let image = UIImage(systemName: \"person\")?.jpgData() {\n    let fileData = FileData(data: image, \n                            fileName: \"Person.jpg\", \n                            fileDirectory: \"work_1\")\n    fileDatas.append(fileData)\n}\n\n&lt;em>\/\/ Initial Work Model &lt;\/em>\nif let work = Offline.generateWork(workID: 1, transactions: &#91;transaction, transactionFile&#93;) {\n    &lt;em>\/\/ Sync Data with works, files, userID and parameters&lt;\/em>\n    Offline.syncData(works: &#91;work&#93;, files: fileDatas, parameters: &#91;:&#93;, userID: \"005875\") { (error, response) in\n        &lt;em>\/\/ Callback return response or error&lt;\/em>\n        print(error, response)\n    }\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki light-plus\" style=\"background-color: #FFFFFF\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #800000\">&lt;em&gt;<\/span><span style=\"color: #000000\">\/\/ Your Store Procedure Model<\/span><span style=\"color: #800000\">&lt;\/em&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #001080\">struct<\/span><span style=\"color: #000000\"> DataModel: <\/span><span style=\"color: #001080\">Codable<\/span><span style=\"color: #000000\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #0000FF\">let<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">appDataProcudure<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #267F99\">String<\/span><span style=\"color: #000000\"> = <\/span><span style=\"color: #A31515\">&quot;TEST_SYNC_OFFLINE_I&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #0000FF\">let<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">name<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #267F99\">String<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #0000FF\">let<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">value<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #267F99\">String<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    <\/span><span style=\"color: #0000FF\">enum<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #267F99\">CodingKeys<\/span><span style=\"color: #000000\">: String, CodingKey {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        <\/span><span style=\"color: #0070C1\">case<\/span><span style=\"color: #000000\"> appDataProcudure = <\/span><span style=\"color: #A31515\">&quot;APP_DATA_PROCEDURE&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        <\/span><span style=\"color: #0070C1\">case<\/span><span style=\"color: #000000\"> name = <\/span><span style=\"color: #A31515\">&quot;NAME&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        <\/span><span style=\"color: #0070C1\">case<\/span><span style=\"color: #000000\"> value = <\/span><span style=\"color: #A31515\">&quot;VALUE&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #800000\">&lt;em&gt;<\/span><span style=\"color: #000000\">\/\/ Initial Your Store Procedure Model<\/span><span style=\"color: #800000\">&lt;\/em&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #0000FF\">let<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">dataModel<\/span><span style=\"color: #000000\"> = <\/span><span style=\"color: #795E26\">DataModel<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #001080\">name<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #A31515\">&quot;Sira&quot;<\/span><span style=\"color: #000000\">, <\/span><span style=\"color: #001080\">value<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #A31515\">&quot;test&quot;<\/span><span style=\"color: #000000\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #800000\">&lt;em&gt;<\/span><span style=\"color: #000000\">\/\/ Initial Transaction for Your Store Procedure Model<\/span><span style=\"color: #800000\">&lt;\/em&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #0000FF\">let<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">transaction<\/span><span style=\"color: #000000\"> = <\/span><span style=\"color: #795E26\">Transaction<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #001080\">transactionID<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #098658\">1<\/span><span style=\"color: #000000\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">                              <\/span><span style=\"color: #001080\">transactionType<\/span><span style=\"color: #000000\">: .<\/span><span style=\"color: #001080\">sp<\/span><span style=\"color: #000000\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">                              <\/span><span style=\"color: #001080\">parameters<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #001080\">dataModel<\/span><span style=\"color: #000000\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #800000\">&lt;em&gt;<\/span><span style=\"color: #000000\">\/\/ Initial File Transaction Model<\/span><span style=\"color: #800000\">&lt;\/em&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #0000FF\">let<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">file<\/span><span style=\"color: #000000\"> = <\/span><span style=\"color: #795E26\">FileTransaction<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #001080\">sourcePath<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #A31515\">&quot;Sync\/Files\/work_1&quot;<\/span><span style=\"color: #000000\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">                           <\/span><span style=\"color: #001080\">sourceFile<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #A31515\">&quot;Person.jpg&quot;<\/span><span style=\"color: #000000\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">                           <\/span><span style=\"color: #001080\">destinationPath<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #A31515\">&quot;Work\/work_1&quot;<\/span><span style=\"color: #000000\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">                           <\/span><span style=\"color: #001080\">destinationFile<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #A31515\">&quot;Person.jpg&quot;<\/span><span style=\"color: #000000\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #800000\">&lt;em&gt;<\/span><span style=\"color: #000000\">\/\/ Initial Transaction for File<\/span><span style=\"color: #800000\">&lt;\/em&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #0000FF\">let<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">transactionFile<\/span><span style=\"color: #000000\"> = <\/span><span style=\"color: #795E26\">Transaction<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #001080\">transactionID<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #098658\">2<\/span><span style=\"color: #000000\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">                                  <\/span><span style=\"color: #001080\">transactionType<\/span><span style=\"color: #000000\">: .<\/span><span style=\"color: #001080\">file<\/span><span style=\"color: #000000\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">                                  <\/span><span style=\"color: #001080\">parameters<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #001080\">file<\/span><span style=\"color: #000000\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #800000\">&lt;em&gt;<\/span><span style=\"color: #000000\">\/\/ Get File data for sync<\/span><span style=\"color: #800000\">&lt;\/em&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #0000FF\">var<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">fileDatas<\/span><span style=\"color: #000000\">: &#91;<\/span><span style=\"color: #267F99\">FileData<\/span><span style=\"color: #000000\">&#93; = []<\/span><\/span>\n<span class=\"line\"><span style=\"color: #AF00DB\">if<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">let<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">image<\/span><span style=\"color: #000000\"> = <\/span><span style=\"color: #795E26\">UIImage<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #001080\">systemName<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #A31515\">&quot;person&quot;<\/span><span style=\"color: #000000\">)?.<\/span><span style=\"color: #795E26\">jpgData<\/span><span style=\"color: #000000\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    let <\/span><span style=\"color: #001080\">fileData<\/span><span style=\"color: #000000\"> = <\/span><span style=\"color: #795E26\">FileData<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #001080\">data<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #001080\">image<\/span><span style=\"color: #000000\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">                            <\/span><span style=\"color: #001080\">fileName<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #A31515\">&quot;Person.jpg&quot;<\/span><span style=\"color: #000000\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">                            <\/span><span style=\"color: #001080\">fileDirectory<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #A31515\">&quot;work_1&quot;<\/span><span style=\"color: #000000\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    fileDatas.append(fileData)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #800000\">&lt;em&gt;<\/span><span style=\"color: #000000\">\/\/ Initial Work Model <\/span><span style=\"color: #800000\">&lt;\/em&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #AF00DB\">if<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #0000FF\">let<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">work<\/span><span style=\"color: #000000\"> = <\/span><span style=\"color: #001080\">Offline<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #795E26\">generateWork<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #001080\">workID<\/span><span style=\"color: #000000\">: <\/span><span style=\"color: #098658\">1<\/span><span style=\"color: #000000\">, <\/span><span style=\"color: #001080\">transactions<\/span><span style=\"color: #000000\">: &#91;<\/span><span style=\"color: #001080\">transaction<\/span><span style=\"color: #000000\">, <\/span><span style=\"color: #001080\">transactionFile<\/span><span style=\"color: #000000\">&#93;) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    &lt;em&gt;<\/span><span style=\"color: #008000\">\/\/ Sync Data with works, files, userID and parameters&lt;\/em&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    Offline.syncData(<\/span><span style=\"color: #001080\">works:<\/span><span style=\"color: #000000\"> &#91;<\/span><span style=\"color: #001080\">work<\/span><span style=\"color: #000000\">&#93;, <\/span><span style=\"color: #001080\">files:<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #001080\">fileDatas<\/span><span style=\"color: #000000\">, <\/span><span style=\"color: #001080\">parameters:<\/span><span style=\"color: #000000\"> &#91;:&#93;, <\/span><span style=\"color: #001080\">userID:<\/span><span style=\"color: #000000\"> <\/span><span style=\"color: #A31515\">&quot;005875&quot;<\/span><span style=\"color: #000000\">) { (<\/span><span style=\"color: #001080\">error<\/span><span style=\"color: #000000\">, response) <\/span><span style=\"color: #001080\">in<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        &lt;em&gt;<\/span><span style=\"color: #008000\">\/\/ Callback return response or error&lt;\/em&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">        <\/span><span style=\"color: #795E26\">print<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #001080\">error<\/span><span style=\"color: #000000\">, <\/span><span style=\"color: #001080\">response<\/span><span style=\"color: #000000\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">}<\/span><\/span><\/code><\/pre><\/div>\n","protected":false},"featured_media":0,"parent":2992,"menu_order":4,"comment_status":"closed","ping_status":"closed","template":"","meta":{"nav_title":"","positive":"","negative":"","footnotes":""},"docs_category":[],"class_list":["post-3004","docs","type-docs","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs\/3004","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/types\/docs"}],"replies":[{"embeddable":true,"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/comments?post=3004"}],"version-history":[{"count":1,"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs\/3004\/revisions"}],"predecessor-version":[{"id":3005,"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs\/3004\/revisions\/3005"}],"up":[{"embeddable":true,"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs\/2992"}],"wp:attachment":[{"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/media?parent=3004"}],"wp:term":[{"taxonomy":"docs_category","embeddable":true,"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs_category?post=3004"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}