แอพแชทส่วนตัว - แยกวิเคราะห์และ Swift

ฉันต้องการสร้างแอปแชทส่วนตัว การออกแบบของฉันเป็นเพียง UITableView ในตอนนี้และฉันกำลังใช้ Parse (การเขียนโค้ดอย่างรวดเร็ว) ตอนนี้ฉันได้ส่วนที่ส่งและรับทำงานได้ (กับทุกภาพเคลื่อนไหวเช่นช่องข้อความที่ขยายไปพร้อมกับแป้นพิมพ์และทั้งหมด) แต่ฉันกำลังสืบค้นทุกข้อความใน "ข้อความ" ของคลาสแทนที่จะเป็นเฉพาะข้อความที่ส่งจากผู้ใช้ 1 ถึงผู้ใช้ 2 .. มีใครรู้วิธีสร้างแบบสอบถามเฉพาะวัตถุหรือไม่? ฉันควรทำอย่างไรดี ?

ขอบคุณสำหรับความช่วยเหลือของคุณ

PS: ฉันค้นหาเป็นเวลานานก่อนที่จะถามคำถามนั้นและไม่พบสิ่งใดเลย


person Arnaud Planche    schedule 22.12.2015    source แหล่งที่มา
comment
หวังว่าตารางข้อความของคุณจะมีช่องผู้ใช้สองช่องที่ระบุถึงผู้ใช้ทาวเวอร์ที่มีส่วนร่วมในการสนทนา (หรือแม้แต่อาร์เรย์ของผู้ใช้ถ้าคุณมีกลุ่ม) จากนั้นคุณใช้ where เพื่อลดจำนวนแถวที่ตรงกัน เช่น findMessages.whereKey("otherUser", equalTo: conversationPartner) เป็นต้น   -  person luk2302    schedule 23.12.2015
comment
ฉันไม่ควรได้รับทุกข้อความที่ส่งถึงผู้ใช้นั้นด้วยเหรอ?   -  person Arnaud Planche    schedule 23.12.2015
comment
นั่นเป็นตัวอย่างที่ลดลงมาก รวมถึงวินาทีที่บังคับใช้ผู้ใช้คนที่สองด้วย   -  person luk2302    schedule 23.12.2015
comment
คุณสามารถใช้ query.whereKey(sender, equalTo: user1) หรืออะไรทำนองนั้น   -  person Pranav Wadhwa    schedule 23.12.2015


คำตอบ (2)


ฉันเชื่อว่าคำตอบที่แท้จริงอยู่ที่การเปลี่ยนโครงสร้างของแบบจำลองของคุณ สิ่งที่ฉันแนะนำคือสร้างคลาสที่เรียกว่า "การสนทนา" บนการแยกวิเคราะห์ ชั้นเรียนนี้จะมี:

  1. สมาชิกที่เรียกว่า "ข้อความ" (ซึ่งเป็นอาร์เรย์ของข้อความทั้งหมดที่ส่ง/รับในการสนทนา)

  2. สมาชิกที่เรียกว่า "ผู้เข้าร่วม" - อาร์เรย์ของสตริงของรหัสของผู้เข้าร่วมที่อยู่ในการสนทนา (รหัสอาจเป็นรหัสวัตถุของพวกเขา)

จากนั้นสิ่งที่คุณต้องทำคือค้นหาการสนทนาในชั้นเรียนโดยที่Key("participants", containsIn: ids) โดยที่ "ids" คือ [String] ของ id วัตถุของผู้เข้าร่วม (หรือ id ใด ๆ ที่คุณต้องการ)

การออกแบบนี้เป็นสิ่งที่ Layer ใช้: https://layer.com/

person mattyb    schedule 22.12.2015
comment
ขอบคุณสำหรับข้อเสนอแนะของคุณ! ฉันควรใส่ข้อความเป็นตัวชี้หรือไม่? ถ้าใช่ ฉันจะทำอย่างไร? และถ้าไม่ใช่ : ฉันจะสืบค้นข้อความได้อย่างไร? - person Arnaud Planche; 23.12.2015
comment
ฉันสร้างการสนทนาในชั้นเรียน แต่เป็นวิธีที่ทุกครั้งที่คุณติดต่อกับบุคคล คุณจะสร้างการสนทนาใหม่ซึ่งไม่ใช่สิ่งที่ฉันกำลังมองหา... คุณมีวิธีทำให้การสนทนาเปิดขึ้นอีกครั้งหรือไม่ หากมีอยู่แล้ว ? - person Arnaud Planche; 23.12.2015
comment
ฉันไม่แน่ใจว่าคำถามแรกของคุณหมายถึงอะไร? สำหรับคำถามที่สองของคุณ คุณสามารถค้นหาการสนทนาก่อนที่จะสร้างคำถามและตรวจสอบว่าแบบสอบถามนั้นส่งคืนออบเจ็กต์หรือไม่ หากเป็นเช่นนั้น คุณจะรู้ว่ามีอยู่จริง และคุณไม่จำเป็นต้องสร้างคำถามอื่นขึ้นมาใหม่ - person mattyb; 23.12.2015
comment
ถ้าฉันสร้างการสนทนา ฉันเชื่อว่าฉันควรใส่ข้อความในอาร์เรย์เพื่อที่จะได้ข้อความทั้งหมดในครั้งเดียว แต่ฉันจะใส่ข้อความเหล่านั้นในอาร์เรย์เพื่อรับข้อมูลทั้งหมดได้อย่างไร (วันที่สร้างและข้อความ) ? ฉันเชื่อว่ามันควรจะเป็นตัวชี้ใช่ไหม ? แต่ฉันจะสร้างเหมือนอาร์เรย์ของพอยน์เตอร์ได้อย่างไร - person Arnaud Planche; 23.12.2015
comment
และจะสอบถามชื่อทั้งผู้ส่งและผู้รับได้อย่างไร ? - person Arnaud Planche; 23.12.2015

ฉันคิดว่าการแยกวิเคราะห์ไม่เหมาะสมสำหรับแอปแชท เนื่องจากการแชทจำเป็นต้องแบบเรียลไทม์และพร้อมกัน ดังนั้นฉันขอแนะนำ Firebase หรือ Pusher ทั้งสองระบบซ็อกเก็ตมีการอัปเดตแบบเรียลไทม์และสร้างขึ้นสำหรับแอปแชท

ในทางกลับกัน หากคุณยืนกรานเกี่ยวกับการแยกวิเคราะห์ คุณอาจใช้ก็ได้

ลิงค์วิธี PFObject +objectWithoutDataWithClassName:objectId: ด้านล่าง

https://parse.com/docs/ios/api/Classes/PFObject.html#/c:objc(cs)PFObject(cm)objectWithoutDataWithClassName:objectId:

พบแอปแชทตัวอย่าง Firebase ด้วยที่นี่

person mert    schedule 22.12.2015
comment
มีวิธีสร้างแอปของฉันด้วยทั้งสองสิ่งนี้ (Parse และ Firebase) หรือไม่ เพราะฉันไม่อยากเริ่มต้นใหม่อีกครั้งด้วยระบบแบ็กเอนด์อื่น - person Arnaud Planche; 23.12.2015