如何实现Swift迁移
ไม่ได้เขียนบทความเตือนความจำนานแล้ววันนี้ถือโอกาสเอาเวลาจะนจะน้อยนิดมานั่งเขียนสักหน่อยใครหลงมาอ่านก็พยายามทำความเข้าใจหน่อยก็แล้วกัน๊ะน๊ะ! 编码编码编码编码编码编码编码
พอดีงานที่ดูแลอยู่มีการ更新版本และมีการเปลี่ยนแปลงไม่สิต้องเรียกว่ามีการเพิ่มPropertiesใหม่เข้าไปเพื่อเก็บค่าบางค่าที่เพิ่มเข้าที่เพิ่มเข้ามาใหม่
Classอนแรกก็นึกว่ามันจะเพิ่มใน类ได้ปกตินได้ปัญหามันเกิดขึ้นปัญหานี้จะเกิดกับเครื่องiPhoneที่ติดตั้งแอพนี้เอาไว้อยู่แล้วดังนั้นในLocalมันก็จะมีObjectที่มันเก็บPropertiesของเก่าเอาไว้ยก ตัวอย่าง
class Dog: Object {
@objc dynamic var name = ""
@objc dynamic var owner : ""
}
Objectานบนนี้เป็นตัวอย่าง类对象狗ในตอนแรกเราก็เก็บ名称,所有者เท่านั้นแต่พอเราจะออกVersionใหม่แล้วClass Objectดันมีค่าที่เพิ่มเข้าไป
class Dog: Object {
@objc dynamic var name = ""
@objc dynamic var owner : ""
@objc dynamic var color : ""
}
กกับาหมาตัวนี้สีอัลลัยปัญหาจะไม่เกิดเลยถ้ามีการติดตั้งแอพใหม่ไอ้ครั้นเราจะไปบอกกับUserว่าเฮ้อมึงตอน更新应用程序อะให้ลบอันเก่าออกก่อนนะว้อยย ! (ทำแบบนี้ไม่ได้)
王国王国王国
let realm = try! Realm()
พังแม่งตั้งแต่บรรทัดนี้เลยสัส! (ขอโทษ)
本地对象ที่มันเก็บในเครื่องมันเก็บไว้แค่2个属性แต่Classใหม่ที่ยัดเข้าไปนั้นแม่งมี3个属性กอเรียก试试! colorยเพราะมันไปหาcolorไม่เจอ
วิธีแก้ปัญหานี้เขาเรียกว่า
当地移民
ไม่เกี่อทำการย้ายข้อมูลที่มีอยู่แล้ว(ไม่เกี่ยวกับ类对象นะเว้ยอย่าสบสันนะมึง)ให้มันไปสร้างObjectขึ้นมาใหม่พร้อมด้วย属性ใหม่
แบบรคืการย้ายแบบ本地迁移คือถ้ามีงไปเพิ่ม房地产ในClassในที่นี้คือcolorก็ไม่ต้องทำอะไรมากกระกาศ迁移阻止ก็พอตามด้านล่างนี้
// Inside your application(application:didFinishLaunchingWithOptions:)
let config = Realm.Configuration(
schemaVersion : 1 ,
migrationBlock : { migration , oldSchemaVersion in
if ( oldSchemaVersion < 1 ) {
// ยังไม่ต้องทำเหี้ยไรในนี้ เข้าจั้ย!
}
})
Realm.Configuration. defaultConfiguration = config
let realm = try! Realm()
Dานไว้ที่อพมึงก็จะไม่พังอีกต่อไปไปประกาศเอาไว้ที่AppDelegateเลยจะได้สั่งให้มันทำงานตั้งแต่เริ่มเปิดแอพขึ้นมาเลย更新值เช่นเปลี่ยนจาก名称ไปเป็นอย่างอ่นเดี๋ยวว่างเมื่อเดี๋รจะมา Projectยนใหม่ถ้ามีคนอ่านก็ค่อยมาเขียนละกันเพราะยังไม่ได้เอามาใช้ในProjectที่ทำอยู่
พอเจ็บคอสัส