2012-12-29 42 views
7

Tôi đang sử dụng Bản ghi Magical để tạo điều kiện cho các hoạt động của Dữ liệu lõi. Hãy tưởng tượng chúng ta có một tập hợp các json như thế này, và một mô hình Core Data định nghĩa giống hệt nhau:Tránh các mục trùng lặp khi nhập dữ liệu với Magical Record

{ 
    "cars": [ 
     { 
      "name": "Corolla", 
      "brand": { 
       "name": "Toyota" 
      }, 
      "price": 20000 
     }, 
     { 
      "name": "Pirus", 
      "brand": { 
       "name": "Toyota" 
      }, 
      "price": 50000 
     }, 
     { 
      "name": "RAV-4", 
      "brand": { 
       "name": "Toyota" 
      }, 
      "price": 30000 
     }, 
     { 
      "name": "Golf", 
      "brand": { 
       "name": "VW" 
      }, 
      "price": 40000 
     }, 
     { 
      "name": "Polo", 
      "brand": { 
       "name": "VW" 
      }, 
      "price": 20000 
     } 
    ] 
} 

Bây giờ, nếu chúng ta sử dụng Magical phương pháp Ghi helper:

- (BOOL) MR_importValuesForKeysWithObject:(id)objectData; 

hoặc

+ (id) MR_importFromObject:(id)data; 

nó sẽ được nhập dưới dạng 5 mục nhập Ô tô và 5 mục của Thương hiệu. Tuy nhiên, trong mô hình Dữ liệu cốt lõi của chúng tôi, mối quan hệ Thương hiệu xe hơi là một trong nhiều, và thuộc tính tên thương hiệu được cho là duy nhất, vì vậy tôi mong đợi 5 mục của Ô tô và 2 mục của Thương hiệu (Toyota và VW).

Câu hỏi của tôi là cách duy trì tính duy nhất của dữ liệu trong khi nhập bằng Dữ liệu chính. Đây có phải là thứ tôi có thể định nghĩa trong mô hình Dữ liệu cốt lõi, như thuộc tính duy nhất không? hoặc là tôi cần ghi đè phương thức nhập của Bản ghi Magical?

+0

Bạn có nhận được câu trả lời cho điều này không? – Fogmeister

+0

Tôi khá chắc chắn bạn sẽ phải giải quyết vấn đề này theo chương trình dựa trên http://forums.pragprog.com/forums/90/topics/2875 của Marcus S. Zarra –

+0

Theo http://www.cimgf.com/ 2012/05/29/import-data-made-easy/nó xuất hiện bạn có thể thêm một khóa 'relatedByAttribute' và ánh xạ nó vào tài sản mà nó sẽ coi như là một chìa khóa ... – ChickensDontClap

Trả lời

6

Bạn cần phải nói với MagicalRecord số nhận dạng duy nhất là gì. Trong trường hợp của bạn, bạn không có ID duy nhất, nhưng bạn có thể sử dụng thuộc tính name.

Giả sử bạn có một NSManagedObject Car với một mối quan hệ với một NSManagedObject Brand, bạn phải thiết lập relatedByAttribute-name về mối quan hệ với Brand trong từ điển thông tin người dùng.

Khi bạn đã thực hiện MagicalRecord này sẽ tra cứu bất kỳ bản ghi nào với thuộc tính name và sử dụng bản ghi thích hợp nếu đã tồn tại hoặc tạo bản ghi nếu cần.

Điều này có nghĩa là bạn sẽ không phải ghi đè quan trọng bằng lớp danh mục.

Hãy cho tôi biết nếu bạn cần thêm thông tin.

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