2009-11-21 22 views
5

Tôi có một bối cảnh đối tượng được quản lý mà tôi thêm hai cửa hàng SQLite khác nhau. Tôi sử dụng Cấu hình trong Mô hình đối tượng được quản lý để gán các thực thể nhất định cho một cửa hàng và các thực thể khác cho một cửa hàng khác. Cấu hình được gọi là "UserDB" và "MainDB".Core Data Migration thông báo lỗi " 'mẫu không chứa cấu hình 'XYZ'.'"

Mọi thứ hoạt động ổn cho đến khi tôi cố gắng sử dụng tính năng di chuyển tự động. Sau khi tạo phiên bản Mô hình đối tượng được quản lý mới và thêm thuộc tính mới vào một trong các thực thể trong Cấu hình UserDB, tôi nhận được ngoại lệ khi thêm cửa hàng phiên bản cũ (cho cửa hàng liên quan đến UserDB) vào điều phối viên cửa hàng: 'Mô hình không chứa cấu hình 'UserDB'. ' Tôi không thể tìm thấy lần truy cập nào cho lỗi này trên Google. Có ai ở ngoài đó sử dụng nhiều cửa hàng với Cấu hình không? Bất cứ ai có một ý tưởng những gì tôi có thể làm sai?

Ngăn xếp trông như thế này:

objc_exception_throw 
-[NSManagedObjectModel isConfiguration:compatibleWithStoreMetadata:] 
-[NSStoreMigrationPolicy sourceModelForStoreAtURL:metadata:error:] 
-[NSStoreMigrationPolicy(InternalMethods) _gatherDataAndPerformMigration:] 
-[NSPersistentStoreCoordinator addPersistentStoreWithType:configuration:URL:options:error:] 
-[MyAppDelegate persistentStoreCoordinator] 
+0

Cũng gặp sự cố này. Điều tương tự có xảy ra khi tạo bản đồ di chuyển không? – pokstad

Trả lời

11

này trông giống như một lỗi với cấu hình di cư +. Tôi đã có thể làm việc xung quanh vấn đề bằng cách đi qua các chuyển động tương tự và đi qua nil để cấu hình khi gọi addPersistentStoreWithType. Việc di chuyển xảy ra, và sau đó tôi có thể tạo một điều phối viên lưu trữ liên tục mới và thêm lại các cửa hàng với các đối số chuỗi cấu hình thích hợp.

Đây là lỗi liên quan đến cấu hình thứ hai mà tôi đã gặp phải. Không phải là một tính năng được thử nghiệm rõ ràng.

+0

Cảm ơn bạn đã đăng bài này. Đây thực sự là vấn đề của tôi. – awolf

+0

Cảm ơn, điều này dường như đã làm việc cho tôi. – futureshocked

+0

Hmm đã đấu vật với điều này trong một ngày qua. Giải pháp này "gần như" hoạt động. Nhưng có vẻ như có vấn đề về thời gian gắn liền với nó: tức là nó chỉ hoạt động đôi khi nếu tôi tạm dừng thực hiện đủ lâu. –

0

Tôi gặp vấn đề tương tự. Mẫu thực tế giống hệt nhau và thông báo lỗi giống nhau. Hóa ra, tuy nhiên, là kết quả của sai lầm của riêng tôi.

Hãy nói rằng mô hình cũ là Blah.xcdatamodel và 2.xcdatamodel Blah mới. Tôi đã bắt đầu thay đổi Blah trước khi nhận ra sai lầm của mình và tạo Blah 2. Sau đó tôi sử dụng hệ thống điều khiển phiên bản của mình (Git) để trở lại Blah cũ và sau đó tái tạo Blah 2. Mọi thứ đều đúng. Nhưng tôi phải làm điều gì đó sai trong quá trình đảo ngược, bởi vì khi tôi nghĩ rằng kiểm tra lại rằng Blah.xcdatamodel trong thư mục dự án hiện tại của tôi thực sự giống như Blah.xcdatamodel trong thư mục dự án tôi đã sử dụng để xây dựng phiên bản trước của ứng dụng (may mắn là tôi luôn giữ một kho lưu trữ nén của thư mục dự án cho mỗi phiên bản được phát hành vì tôi không hoàn toàn tin tưởng vào các hệ thống kiểm soát phiên bản), tôi thấy rằng chúng thực sự khác nhau, mặc dù chúng trông giống hệt nhau trong XCode. Ví dụ: kích thước tệp khác nhau.

tôi thay các Blah cũ vào thư mục dự án hiện tại của tôi, và lo and behold nó tất cả đi một cách hoàn hảo, không có nhu cầu sử dụng workaround được mô tả bởi Ken.

Tôi không nói rằng Ken nhất thiết phải mắc sai lầm tương tự, nhưng nếu bạn gặp phải thông báo này, ít nhất là đáng để xác nhận rằng mô hình bạn đang di chuyển là REALLY mô hình được sử dụng để tạo dữ liệu được đề cập .

+0

Tôi đã nhận thấy rằng vấn đề trên thực tế KHÔNG được giải quyết. Có vẻ như nó đã làm việc lần thứ hai chỉ vì dữ liệu trên thực tế đã được di chuyển lần đầu tiên. Nói cách khác, lần đầu tiên bạn chạy dữ liệu được di chuyển nhưng ứng dụng không thành công với thông báo "Mô hình không chứa cấu hình" XYZ ". Sau đó, lần thứ hai nó chạy tốt. Tất nhiên đây không phải là trải nghiệm người dùng tuyệt vời, vì vậy tôi buộc phải áp dụng phương pháp 2 giai đoạn như Ken. – jfewtr

+0

Hơn nữa, cách tiếp cận hai giai đoạn này có vấn đề riêng của nó, ít nhất là đối với tôi, cụ thể là sự cố lần đầu tiên (và chỉ lần đầu tiên) người dùng chuyển sang ứng dụng khác sau khi di chuyển dữ liệu. Tôi sẽ đặt câu hỏi này vào một câu hỏi riêng. – jfewtr

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