2016-04-19 20 views
5

Tôi cố gắng để di chuyển CoreData lên phiên bản mới, Tôi đang theo bước này:Làm thế nào để xóa dữ liệu lõi cũ và xây dựng lại dữ liệu mới?

Thêm một mô hình Version mới (Chọn name.xcdatamodeld sau đó tổng biên tập> Thêm mô hình Version) trước khi thực hiện bất kỳ thay đổi, nếu bạn có một ứng dụng đã được gửi tới App Store đang sử dụng phiên bản mẫu trước đó.

Sau đó, Thêm một tập tin mới từ Core Data Tab, như Mapping Mẫu Chọn, Nguồn mẫu (Model Version mà App trình đang sử dụng) Destination mẫu (Model Version mà bạn đã thực hiện các thay đổi)

source

Nhưng dữ liệu của tôi phần lớn là hình ảnh và lỗi ứng dụng vì nó chiếm nhiều bộ nhớ. Vì vậy, tôi muốn xóa mô hình dữ liệu cũ và dữ liệu của nó và tạo dữ liệu mô hình mới trống khi người dùng cập nhật ứng dụng của họ. làm như thế nào?

Trả lời

3

Nếu thay đổi mô hình dữ liệu, bạn có thể chỉ cần kiểm tra mô hình mà tệp cơ sở dữ liệu có. Nếu không phải là tệp mới, hãy xóa tệp được chỉ định trong StoreCoordinator bằng NSFileManager và khởi động lại StoreCoordinater và NSManagedContext một lần nữa để tạo tệp mới.

Something như thế (mã không kiểm tra):

var error: NSError 
var applicationDocumentsDirectory: NSURL = NSFileManager.defaultManager().URLsForDirectory(NSDocumentDirectory, inDomains:NSUserDomainMask).lastObject 
let storeURL: NSURL = applicationDocumentsDirectory.URLByAppendingPathComponent("Database.sqlite") 
NSFileManager.defaultManager().removeItemAtPath(storeURL.path, error) 

Nếu mô hình không thay đổi, bạn cần phải lưu các thông tin của bản cập nhật bất cứ nơi nào. Một tệp văn bản, trong chính cơ sở dữ liệu hoặc trong UserDefaults. Bạn chỉ cần một lá cờ để kiểm tra, cho dù cơ sở dữ liệu đã được cập nhật/làm sạch.

Sau đó, bạn có thể xóa cơ sở dữ liệu như trên hoặc tìm nạp tất cả các đối tượng và xóa chúng.

+0

hiện nó sẽ xây dựng lại dữ liệu cốt lõi mỗi khi người dùng mở ứng dụng? –

+1

@AldoLazuardi Tùy thuộc vào bạn khi bạn muốn có cơ sở dữ liệu mới. Một tùy chọn là tạo một tệp văn bản để bạn lưu phiên bản Cơ sở dữ liệu của mình. Nếu phiên bản quá cũ và phải được xây dựng lại, bạn xóa tệp lưu trữ và tạo lại một tệp trống. – Binarian

+0

Xóa các tệp -shm và -wal cũng như với tệp Store liên quan –

Các vấn đề liên quan