การจัดการ Parse Data Types บน Android
23 นาที
การวิเคราะห์ประเภทข้อมูลบน android บทนำ ในคู่มือนี้ คุณจะได้เรียนรู้เกี่ยวกับประเภทข้อมูล parse โดยใช้ android คุณจะอ่านและบันทึกวัตถุ parse บน back4app จากแอป android การจัดเก็บข้อมูลบน parse ถูกสร้างขึ้นรอบๆ \<font color="#2166ae">parseobject\</font> แต่ละ \<font color="#2166ae">parseobject\</font> ประกอบด้วยคู่คีย์ ค่า ของข้อมูลที่เข้ากันได้กับ json ข้อมูลนี้ไม่มีโครงสร้าง ซึ่งหมายความว่าเราไม่จำเป็นต้องระบุล่วงหน้าว่าคีย์ใดมีอยู่ในแต่ละ \<font color="#2166ae">parseobject\</font> เราสามารถตั้งค่าคู่คีย์ ค่า ใดก็ได้ที่เราต้องการ และแบ็กเอนด์ของเราจะจัดเก็บพวกมัน สำหรับตัวอย่าง สมมติว่าเรากำลังติดตามคะแนนสูงสุดสำหรับเกมหนึ่ง \<font color="#2166ae">parseobject\</font> อาจประกอบด้วย 1 คะแนน 1337 , ชื่อผู้เล่น "sean plott" , โหมดโกง false คีย์ต้องเป็นสตริงที่ประกอบด้วยตัวอักษรและตัวเลข และค่าต่างๆ สามารถเป็น \<font color="#2166ae">สตริง\</font> => \<font color="#2166ae">สตริง\</font> \<font color="#2166ae">หมายเลข\</font> (ค่าตัวเลขพื้นฐาน เช่น \<font color="#2166ae">int\</font> , \<font color="#2166ae">double\</font> ) \<font color="#2166ae">บูล\</font> => \<font color="#2166ae">boolean\</font> \<font color="#2166ae">วันที่และเวลา\</font> => java util date \<font color="#2166ae">ว่าง\</font> => jsonobject null \<font color="#2166ae">อาเรย์\</font> =>jsonarray \<font color="#2166ae">ไฟล์\</font> => parse file \<font color="#2166ae">พอยเตอร์\</font> => อื่นๆ parseobject \<font color="#2166ae">ความสัมพันธ์\</font> => parserelation \<font color="#2166ae">จุดภูมิศาสตร์\</font> => parsegeopoint แต่ละ \<font color="#2166ae">parseobject\</font> มีชื่อคลาสที่เราสามารถใช้เพื่อแยกแยะประเภทข้อมูลที่แตกต่างกัน สำหรับตัวอย่าง เราสามารถเรียกวัตถุคะแนนสูงว่า \<font color="#2166ae">gamescore\</font> นอกจากนี้ยังมีฟิลด์บางอย่างที่เราไม่จำเป็นต้องระบุซึ่งมีให้เพื่อความสะดวก \<font color="#2166ae">objectid\</font> เป็นตัวระบุที่ไม่ซ้ำกันสำหรับแต่ละวัตถุที่บันทึกไว้ \<font color="#2166ae">createdat\</font> และ \<font color="#2166ae">updatedat\</font> แสดงถึงเวลาที่วัตถุแต่ละชิ้นถูกสร้างขึ้นและแก้ไขล่าสุดในคลาวด์ แต่ละฟิลด์เหล่านี้จะถูกกรอกโดยอัตโนมัติจาก back4app ในขณะที่เราบันทึก \<font color="#2166ae">parseobject\</font> ใหม่ เราขอแนะนำให้คุณ \<font color="#2166ae">nameyourclasseslikethis\</font> (uppercamelcase) และ \<font color="#2166ae">nameyourkeyslikethis \</font> (lowercamelcase) เพื่อให้โค้ดของคุณดูสวยงาม บทเรียนนี้ใช้แอปพื้นฐานที่สร้างขึ้นใน android studio 4 1 1 โดยมี \<font color="#2166ae">buildtoolsversion=30 0 2\</font> , \<font color="#2166ae">compile sdk version\</font> = \<font color="#2166ae">30 0 2\</font> และ \<font color="#2166ae">targetsdkversion 30\</font> ในทุกช่วงเวลา คุณสามารถเข้าถึงโปรเจกต์ทั้งหมดได้ผ่าน github repositories ของเรา kotlin example repository https //github com/templates back4app/android crud operations kotlin java example repository https //github com/templates back4app/android crud operations java เป้าหมาย เป้าหมายของเราคือการสร้างแอป android ที่สามารถประมวลผลข้อมูลทุกประเภทที่จัดเตรียมโดย parse server นี่คือภาพรวมของสิ่งที่เราจะทำให้สำเร็จ ข้อกำหนดเบื้องต้น ในการทำตามบทเรียนนี้ เราต้องการ android studio https //developer android com/studio/index html แอปที่สร้างขึ้นบน back4app หมายเหตุ ติดตาม บทเรียนการสร้าง parse app ใหม่ https //www back4app com/docs/get started/new parse app เพื่อเรียนรู้วิธีการสร้าง parse app บน back4app แอป android ที่เชื่อมต่อกับ back4app หมายเหตุ ติดตาม บทเรียนการติดตั้ง parse sdk https //www back4app com/docs/android/parse android sdk เพื่อสร้างโปรเจกต์ android studio ที่เชื่อมต่อกับ back4app อุปกรณ์ (หรือ อุปกรณ์เสมือน https //developer android com/studio/run/managing avds html ) ที่รัน android 4 1 (jelly bean) หรือใหม่กว่า การทำความเข้าใจแอปของเรา คุณจะสร้างแอปเพื่อให้เข้าใจ parse \<font color="#2166ae">ประเภทข้อมูล\</font> ในแอป \<font color="#2166ae">android\</font> นี้ คุณจะสร้างประเภทข้อมูลทั้งหมดในคลาสที่ชื่อว่า \<font color="#2166ae">datatypes\</font> และกำหนดค่าให้กับตัวแปรในคลาสนี้ จากนั้นเราจะอ่านและอัปเดตข้อมูลนี้ หมายเหตุ ประเภทข้อมูล \<font color="#2166ae">pointer\</font> , \<font color="#2166ae">relation\</font> , \<font color="#2166ae">file\</font> , \<font color="#2166ae">geopoint\</font> จะถูกกล่าวถึงในภายหลังในคู่มือเฉพาะ เริ่มกันเลย! 1 สร้างเทมเพลตแอป กำหนดตัวแปรต่อไปนี้ใน \<font color="#2166ae">mainactivity\</font> และแทนที่โค้ดใน \<font color="#2166ae">oncreate\</font> เมธอดด้วยโค้ดต่อไปนี้ 1 private progressdialog progressdialog; 2 private view popupinputdialogview; 3 private recyclerview recyclerview; 4 private string objectid; 5 private static final string tag = "mainactivity"; 6 7 @override 8 protected void oncreate(bundle savedinstancestate) { 9 super oncreate(savedinstancestate); 10 setcontentview(r layout activity main); 11 12 progressdialog = new progressdialog(mainactivity this); 13 14 button savedata = findviewbyid(r id savedata); 15 button readdata = findviewbyid(r id readdata); 16 button updatedata = findviewbyid(r id updatedata); 17 18 savedata setonclicklistener(savedataview > { 19 try { 20 savedatatypes(); 21 } catch (jsonexception e) { 22 e printstacktrace(); 23 } 24 }); 25 26 readdata setonclicklistener(readdataview > readobjects()); 27 28 updatedata setonclicklistener(updatedataview > updateobject()); 29 30 }1 private var progressdialog progressdialog? = null 2 private var objectid string? = null 3 private var popupinputdialogview view? = null 4 private var recyclerview recyclerview? = null 5 private val tag = "mainactivity" 6 7 override fun oncreate(savedinstancestate bundle?) { 8 super oncreate(savedinstancestate) 9 setcontentview(r layout activity main) 10 11 progressdialog = progressdialog(this\@mainactivity) 12 val savedata = findviewbyid\<button>(r id savedata) 13 val readdata = findviewbyid\<button>(r id readdata) 14 val updatedata = findviewbyid\<button>(r id updatedata) 15 16 savedata setonclicklistener { 17 try { 18 savedatatypes() 19 } catch (e jsonexception) { 20 e printstacktrace() 21 } 22 } 23 readdata setonclicklistener { readobjects() } 24 updatedata setonclicklistener { updateobject() } 25 } ก่อนที่จะดำเนินการต่อ เราจำเป็นต้องเชื่อมต่อ \<font color="#2166ae">back4app\</font> กับแอปพลิเคชันของเรา คุณควรบันทึก \<font color="#2166ae">appid\</font> และ \<font color="#2166ae">clientkey\</font> จาก \<font color="#2166ae">back4app\</font> ไปยัง \<font color="#2166ae">string xml\</font> ไฟล์ และจากนั้นให้เริ่มต้น \<font color="#2166ae">parse\</font> ใน \<font color="#2166ae">app java\</font> หรือ \<font color="#2166ae">app kt\</font> ไฟล์。 ติดตาม บทเรียนการสร้างแอป parse ใหม่ https //www back4app com/docs/android/parse android sdk หากคุณไม่รู้ว่าจะเริ่มต้น \<font color="#2166ae">parse\</font> ในแอปของคุณอย่างไร 2 รหัสสำหรับบันทึกวัตถุ ฟังก์ชันสร้างจะสร้างวัตถุใหม่ในฐานข้อมูล back4app เรากำหนด \<font color="#2166ae">savedatatypes\</font> ฟังก์ชันที่เราจะเรียกใน \<font color="#2166ae">oncreate\</font> ฟังก์ชันและใช้รหัสต่อไปนี้ในฟังก์ชันนี้ เราจะบันทึกประเภทข้อมูลทั้งหมดด้วยฟังก์ชันนี้ไปยังวัตถุ datatypes classes 1 private void savedatatypes() throws jsonexception{ 2 parseobject parseobject = new parseobject("datatypes"); 3 4 parseobject put("stringfield", "string"); 5 parseobject put("doublefield", 1 5); 6 parseobject put("intfield", 2); 7 parseobject put("boolfield", true); 8 parseobject put("datefield", calendar getinstance() gettime()); 9 10 jsonobject myobject = new jsonobject(); 11 myobject put("number", 1); 12 myobject put("string", "42"); 13 14 parseobject put("jsonobject", myobject); 15 16 17 jsonarray myarray = new jsonarray(); 18 myarray put(myobject); 19 myarray put(myobject); 20 myarray put(myobject); 21 22 parseobject put("jsonarray", myarray); 23 24 25 list\<string> list = new arraylist<>(); 26 list add("string1"); 27 list add("string2"); 28 parseobject put("liststringfield", list); 29 30 list\<integer> listint = new arraylist<>(); 31 listint add(1); 32 listint add(2); 33 listint add(3); 34 parseobject put("listintfield", listint); 35 36 list\<boolean> listbool = new arraylist<>(); 37 listbool add(true); 38 listbool add(false); 39 parseobject put("listboolfield", listbool); 40 41 progressdialog show(); 42 parseobject saveinbackground(e > { 43 progressdialog dismiss(); 44 if (e == null) { 45 toast maketext(this, "object created successfully ", toast length short) show(); 46 objectid = parseobject getobjectid(); 47 } else { 48 objectid = null; 49 toast maketext(this, e getmessage(), toast length long) show(); 50 } 51 }); 52 }1 private fun savedatatypes() { 2 val parseobject = parseobject("datatypes") 3 4 parseobject put("stringfield", "string") 5 parseobject put("doublefield", 1 5) 6 parseobject put("intfield", 2) 7 parseobject put("boolfield", true) 8 parseobject put("datefield", calendar getinstance() time) 9 10 11 val myobject = jsonobject() 12 myobject put("number", 1) 13 myobject put("string", "42") 14 15 parseobject put("jsonobject", myobject) 16 17 val myarray = jsonarray() 18 myarray put(myobject) 19 myarray put(myobject) 20 myarray put(myobject) 21 22 parseobject put("jsonarray", myarray) 23 24 val list mutablelist\<string> = arraylist() 25 list add("string1") 26 list add("string2") 27 parseobject put("liststringfield", list) 28 29 val listint mutablelist\<int> = arraylist() 30 listint add(1) 31 listint add(2) 32 listint add(3) 33 parseobject put("listintfield", listint) 34 35 val listbool mutablelist\<boolean> = arraylist() 36 listbool add(true) 37 listbool add(false) 38 parseobject put("listboolfield", listbool) 39 40 progressdialog? show() 41 parseobject saveinbackground { 42 progressdialog? dismiss() 43 if (it == null) { 44 toast maketext(this, "object created successfully ", toast length short) show() 45 objectid = parseobject objectid 46 } else { 47 objectid = null 48 toast maketext(this, it message, toast length long) show() 49 } 50 } 51 } 3 รหัสสำหรับอ่านวัตถุ เราจะให้ \<font color="#2166ae">objectid\</font> ตัวแปรที่เราได้กำหนดใน \<font color="#2166ae">savedatatypes\</font> ฟังก์ชันเป็นพารามิเตอร์สำหรับการค้นหาและอ่านข้อมูลที่เราได้บันทึกใน \<font color="#2166ae">savedatatypes\</font> ฟังก์ชันด้วย \<font color="#2166ae">readobjects\</font> ฟังก์ชัน 1 private void readobjects() { 2 if (objectid == null) { 3 toast maketext(this, "no object click on the 'save data' button before ", toast length short) show(); 4 return; 5 } 6 7 parsequery\<parseobject> query = new parsequery<>("datatypes"); 8 9 progressdialog show(); 10 query getinbackground(objectid, (object, e) > { 11 progressdialog dismiss(); 12 if (e == null) { 13 list\<data> list = new arraylist<>(); 14 list add(new data("int list field",object get("listintfield") tostring())); 15 list add(new data("string field",object get("stringfield") tostring())); 16 list add(new data("double field",object get("doublefield") tostring())); 17 list add(new data("int field",object get("intfield") tostring())); 18 list add(new data("string list field",object get("liststringfield") tostring())); 19 list add(new data("date field",object get("datefield") tostring())); 20 list add(new data("bool field",object get("boolfield") tostring())); 21 list add(new data("list bool field",object get("listboolfield") tostring())); 22 list add(new data("json object field",object get("jsonobject") tostring())); 23 list add(new data("json array field",object get("jsonarray") tostring())); 24 25 showdatatypes(list); 26 27 } else { 28 toast maketext(this, e getmessage(), toast length short) show(); 29 } 30 }); 31 }1 private fun readobjects() { 2 if (objectid == null) { 3 toast maketext( 4 this, 5 "no object click on the 'save data' button before ", 6 toast length short 7 ) show() 8 return 9 } 10 11 val query = parsequery\<parseobject>("datatypes") 12 13 14 progressdialog? show() 15 query getinbackground( 16 objectid 17 ) { obj, e > 18 progressdialog? dismiss() 19 if (e == null) { 20 21 val list mutablelist\<data> = arraylist() 22 list add(data("int list field", obj get("listintfield") tostring())) 23 list add(data("string field",obj get("stringfield") tostring())) 24 list add(data("double field", obj get("doublefield") tostring())) 25 list add(data("int field", obj get("intfield") tostring())) 26 list add(data("string list field", obj get("liststringfield") tostring())) 27 list add(data("date field",obj get("datefield") tostring())) 28 list add(data("bool field", obj get("boolfield") tostring())) 29 list add(data("list bool field", obj get("listboolfield") tostring())) 30 list add(data("json object field", obj get("jsonobject") tostring())) 31 list add(data("json array field", obj get("jsonarray") tostring())) 32 showdatatypes(list) 33 } else { 34 toast maketext(this, e message, toast length short) show() 35 } 36 37 } 38 } ในส่วนนี้ เราได้สร้างคลาสโมเดลที่เรียกว่า \<font color="#2166ae">data\</font> เราใช้ข้อมูลที่เราได้รับใน \<font color="#2166ae">readobjects\</font> ฟังก์ชันเพื่อสร้างวัตถุจากคลาสโมเดลนี้ เราให้วัตถุเหล่านี้เป็นองค์ประกอบในรายการที่เราสร้างใน \<font color="#2166ae">data\</font> ประเภท จากนั้นเราจะให้รายการนี้เป็นพารามิเตอร์แก่ \<font color="#2166ae">showdatatypes\</font> ฟังก์ชันและแสดงใน \<font color="#2166ae">alertdialog\</font> นี่คือ \<font color="#2166ae">ข้อมูล\</font> โมเดล 1 public class data { 2 private string type; 3 private string value; 4 5 public data(string type, string value) { 6 this type = type; 7 this value = value; 8 } 9 10 public string gettype() { 11 return type; 12 } 13 14 public data settype(string type) { 15 this type = type; 16 return this; 17 } 18 19 public string getvalue() { 20 return value; 21 } 22 23 public data setvalue(string value) { 24 this value = value; 25 return this; 26 } 27 }1 class data(val type\ string?=null,val value\ string?=null) { 2 3 } นี่คือ \<font color="#2166ae">showdatatypes\</font> ฟังก์ชัน 1 private void showdatatypes(list\<data> list){ 2 alertdialog builder alertdialogbuilder = new alertdialog builder(mainactivity this); 3 alertdialogbuilder settitle("data types"); 4 alertdialogbuilder setcancelable(true); 5 initpopupviewcontrols(list); 6 //we are setting our custom popup view by alertdialog builder 7 alertdialogbuilder setview(popupinputdialogview); 8 final alertdialog alertdialog = alertdialogbuilder create(); 9 alertdialog show(); 10 } 11 12 private void initpopupviewcontrols(list\<data> list) { 13 layoutinflater layoutinflater = layoutinflater from(mainactivity this); 14 popupinputdialogview = layoutinflater inflate(r layout custom alert dialog, null); 15 recyclerview = popupinputdialogview\ findviewbyid(r id recyclerview); 16 itemadapter adapter = new itemadapter(list,this); 17 recyclerview\ setlayoutmanager(new linearlayoutmanager(this,linearlayoutmanager vertical,false)); 18 recyclerview\ setadapter(adapter); 19 }1 private fun showdatatypes(list list\<data>) { 2 val alertdialogbuilder = alertdialog builder(this\@mainactivity) 3 alertdialogbuilder settitle("data types") 4 alertdialogbuilder setcancelable(true) 5 initpopupviewcontrols(list) 6 //we are setting our custom popup view by alertdialog builder 7 alertdialogbuilder setview(popupinputdialogview) 8 val alertdialog = alertdialogbuilder create() 9 alertdialog show() 10 } 11 12 @suppresslint("inflateparams") 13 private fun initpopupviewcontrols(list list\<data>) { 14 val layoutinflater = layoutinflater from(this\@mainactivity) 15 popupinputdialogview = layoutinflater inflate(r layout custom alert dialog, null) 16 recyclerview = popupinputdialogview? findviewbyid(r id recyclerview) 17 val adapter = itemadapter(this\@mainactivity, list) 18 recyclerview? layoutmanager = linearlayoutmanager( 19 this, 20 linearlayoutmanager vertical, 21 false 22 ) 23 recyclerview? adapter = adapter 24 } 4 รหัสสำหรับอัปเดตวัตถุ ฟังก์ชัน \<font color="#2166ae">updateobject\</font> มีหน้าที่รับผิดชอบในการอัปเดตข้อมูลในวัตถุที่สร้างขึ้นในฟังก์ชัน \<font color="#2166ae">savedatatypes\</font> เรากำลังใช้ \<font color="#2166ae">objectid\</font> อีกครั้งสำหรับการอัปเดตวัตถุ 1 public void updateobject() { 2 if (objectid == null) { 3 toast maketext(this, "no object click on the 'save data' button before ", toast length short) show(); 4 return; 5 } 6 7 parseobject parseobject = new parseobject("datatypes"); 8 parseobject setobjectid(objectid); 9 parseobject put("intfield", 5); 10 parseobject put("stringfield", "new string"); 11 12 progressdialog show(); 13 14 parseobject saveinbackground(e > { 15 progressdialog dismiss(); 16 if (e == null) { 17 toast maketext(this, "object updated successfully ", toast length short) show(); 18 } else { 19 toast maketext(this, e getmessage(), toast length short) show(); 20 } 21 }); 22 }1 private fun updateobject() { 2 if (objectid == null) { 3 toast maketext( 4 this, 5 "no object click on the 'save data' button before ", 6 toast length short 7 ) show() 8 return 9 } 10 11 val parseobject = parseobject("datatypes") 12 parseobject objectid = objectid 13 parseobject put("intfield", 5) 14 parseobject put("stringfield", "new string") 15 16 progressdialog? show() 17 18 parseobject saveinbackground { 19 progressdialog? dismiss() 20 if (it == null) { 21 toast maketext(this, "object updated successfully ", toast length short) show() 22 } else { 23 toast maketext(this, it message, toast length short) show() 24 } 25 } 26 } 5 การใช้ตัวนับ ตัวอย่างข้างต้นมีกรณีการใช้งานทั่วไป ฟิลด์ \<font color="#2166ae">intfield\</font> สามารถเป็นตัวนับที่เราต้องอัปเดตอย่างต่อเนื่อง วิธีการข้างต้นทำงานได้ แต่ยุ่งยากและอาจนำไปสู่ปัญหาหากเรามีลูกค้าหลายรายพยายามอัปเดตตัวนับเดียวกัน parse มีวิธีการที่เพิ่มฟิลด์จำนวนใด ๆ อย่างอะตอมเพื่อช่วยในการจัดเก็บข้อมูลประเภทตัวนับ ดังนั้น การอัปเดตเดียวกันสามารถเขียนใหม่ได้ว่า 1 parseobject parseobject = new parseobject("datatypes"); 2 parseobject setobjectid(objectid); 3 parseobject increment("intfield",1);1 val parseobject = parseobject("datatypes") 2 parseobject objectid = objectid 3 parseobject increment("intfield",1) 6 การใช้รายการ parse ยังมีวิธีการในการช่วยในการจัดเก็บข้อมูลรายการ มีสามการดำเนินการที่สามารถใช้เพื่อเปลี่ยนแปลงฟิลด์รายการอย่างเป็นอะตอม \<font color="#2166ae">setadd\</font> และ \<font color="#2166ae">setaddall\</font> เพิ่มวัตถุที่กำหนดไปยังตอนท้ายของฟิลด์อาร์เรย์ \<font color="#2166ae">setaddunique\</font> และ \<font color="#2166ae">setaddallunique\</font> เพิ่มเฉพาะวัตถุที่กำหนดซึ่งยังไม่มีอยู่ในฟิลด์อาร์เรย์ไปยังฟิลด์นั้น ตำแหน่งของการแทรกไม่รับประกัน \<font color="#2166ae">remove\</font> และ \<font color="#2166ae">removeall\</font> ลบทุกกรณีของวัตถุที่กำหนดออกจากฟิลด์อาร์เรย์ 6 1 ตัวอย่างการใช้ add และ addall \<font color="#2166ae">liststringfield\</font> มีค่า \["a","b","c","d","e","f","g","g"] รันโค้ดด้านล่าง 1 parseobject parseobject = new parseobject("datatypes"); 2 parseobject setobjectid(objectid); 3 parseobject add("liststringfield","e"); 4 parseobject addall("liststringfield", arrays aslist("e", "f", "g", "g")); 5 parseobject save();1 val parseobject = parseobject("datatypes") 2 parseobject objectid = objectid 3 parseobject add("liststringfield", "e") 4 parseobject addall("liststringfield", arrays aslist("e", "f", "g", "g")) 5 parseobject save() หลังจากคำสั่งนี้ ผลลัพธ์ของฟิลด์ stringlist จะเป็น \["a","b","c","d","e","e","f","g","g"] 6 2 ตัวอย่างการใช้ addunique และ addallunique \<font color="#2166ae">liststringfield\</font> มีค่า \["a","b","c","d","e"] รันโค้ดด้านล่าง 1 parseobject parseobject = new parseobject("datatypes"); 2 parseobject setobjectid(objectid); 3 parseobject addunique("liststringfield","e"); 4 parseobject addallunique("liststringfield",arrays aslist("c", "d", "e", "f")); 5 parseobject save();1 val parseobject = parseobject("datatypes") 2 parseobject objectid = objectid 3 parseobject addunique("liststringfield", "e") 4 parseobject addallunique("liststringfield", arrays aslist("c", "d", "e", "f")) 5 parseobject save() หลังจากคำสั่งนี้ ผลลัพธ์ของ \<font color="#2166ae">stringlist\</font> ฟิลด์จะเป็น \["a","b","c","d","e","f"] ไม่มีค่าที่ซ้ำกัน 6 3 ตัวอย่างที่มี removeall \<font color="#2166ae">liststringfield\</font> มีค่า \["a","b","c","d","e","f"] รันโค้ดด้านล่าง 1 parseobject parseobject = new parseobject("datatypes"); 2 parseobject setobjectid(objectid); 3 parseobject removeall("liststringfield",arrays aslist("c", "d", "e", "f")); 4 parseobject save();1 val parseobject = parseobject("datatypes") 2 parseobject objectid = objectid 3 parseobject removeall("liststringfield", arrays aslist("c", "d", "e", "f")) 4 parseobject save() หลังจากคำสั่งนี้ ผลลัพธ์ของ \<font color="#2166ae">stringlist\</font> ฟิลด์จะเป็น \["a","b"] หมายเหตุ ว่าขณะนี้ไม่สามารถเพิ่มและลบรายการจากอาร์เรย์ในบันทึกเดียวกันได้อย่างอะตอมิก เราจะต้องเรียกบันทึกสำหรับการดำเนินการอาร์เรย์ที่แตกต่างกันแต่ละรายการที่เราต้องการทำแยกกัน 7 ลบฟิลด์เดียวจาก parseobject คุณสามารถลบฟิลด์เดียวจากวัตถุโดยใช้ \<font color="#2166ae">remove\</font> การดำเนินการ 1 parseobject parseobject = new parseobject("datatypes"); 2 parseobject remove("stringfield"); 3 parseobject save();1 val parseobject = parseobject("datatypes") 2 parseobject remove("stringfield") 3 parseobject save() เสร็จสิ้น! ในจุดนี้ เราได้เรียนรู้ \<font color="#2166ae">parse data types\</font> บน \<font color="#2166ae">android\</font>