2016-11-29 23 views
5

Tôi vừa tạo một dự án demo với dữ liệu lõi.Lỗi biểu tượng trùng lặp trong lớp con NSManagedObject

Tôi đã tạo một thực thể Userinfo trong mô hình dữ liệu của mình. Bây giờ tôi đã tạo một lớp con NSManagedObject của thực thể này.

Xcode tự động tạo 4 lớp này.

enter image description here

Bây giờ khi tôi xây dựng dự án nó throws lỗi này:

enter image description here

Tôi đã làm tất cả những gì mà tôi biết để loại bỏ các lỗi của duplicacy nhưng không giúp được gì.

Tôi nghĩ rằng đó là lỗi Xcode. Hãy giúp tôi.

+0

Đây là giải pháp ngắn hơn và dễ dàng hơn cho tôi. [Đây là] (https://stackoverflow.com/a/14449080/8551309) –

+0

[Đây là] (https://stackoverflow.com/a/14449080/8551309) một giải pháp ngắn hơn và dễ dàng hơn cho tôi. –

Trả lời

9

Bạn đang tạo các tệp đã được Xcode tạo cho bạn và do đó nhận được các khai báo trùng lặp. Chi tiết về tính năng này (mới trong Xcode 8) có thể được tìm thấy trong this WWDC video.

Hai bản vá có thể:

1) Sử dụng Xcode tạo ManagedObject lớp con (được đề nghị, tiếp cận hiện đại)

  • Xóa tất cả các lớp con NSManagedObject tạo ra từ dự án của bạn, nếu tồn tại.
  • Đặt Codegen-Class Definition trong .xcdatamodel bạn cho tất cả các đơn vị
  • Hãy chắc chắn rằng Module là rỗng ("Global Namespace" màu xám nhạt) (workaround một lỗi Apple, thấy this answer)

Lưu ý:

Không bao giờ thêm các tập tin tự động tạo ra để dự án của bạn. Ngay cả khi bạn không nhìn thấy các tập tin được tạo ra trong dự án của bạn, Xcode có một tham chiếu đến nó, vì vậy bạn có thể viết phần mở rộng và như vậy. Ví dụ:

extension MyEntity { 
    func doSomething() { 
     // 
    } 
} 

Ngoài ra, bạn có thể chỉ huy + nhấp vào tệp được tạo trong Xcode.

2) Kích hoạt thế hệ lớp con bằng tay (một khá hoang tưởng nhưng đạn chứng minh phương pháp, bỏ qua các tính năng Xcode mới)

  • Xóa tất cả các lớp con NSManagedObject tạo ra từ dự án của bạn, nếu tồn tại.
  • Đặt Codegen để Manual/None trong .xcdatamodel bạn cho tất cả các đơn vị
  • sạch dự án
  • Clean DerivedData folder
  • Restart Xcode
  • thủ tạo NSManagedObject lớp con (trong "Editor" menu)
  • Hãy chắc chắn rằng các tập tin được thêm vào vào dự án của bạn
  • xây dựng
+0

Các tệp đó được tạo ở đâu? Vì tôi cần những lớp đó cho mục đích của mình. – iPeter

+1

Trong dữ liệu có nguồn gốc. Không thêm chúng vào dự án của bạn. Nếu bạn làm theo câu trả lời, nó hoạt động, Xcode có một tham chiếu đến nó một cách tự động. Bạn cũng có thể viết phần mở rộng aso. Nếu bạn có vấn đề, hãy mô tả vấn đề bạn gặp phải. Tôi sẽ cố gắng giúp đỡ. – shallowThought

+0

Cảm ơn bạn rất nhiều. :) – iPeter

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