如何实现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ที่ทำอยู่

พอเจ็บคอสัส