2013-03-21 7 views
6

Próbuję użyć Magical Record do importowania danych do mojej bazy CoreData db.Import nagrań magicznych z już istniejącymi danymi

Obecnie pracuję nad jednostką Person. Atrybuty

A Person ma atrybuty firstName, lastName, personID. (Wiem, że nie potrzebuję idString, nie używam go wewnętrznie, jest używany do rozmowy z serwerem).

W każdym razie, jeśli mam już osobę ...

firstName - John 
lastName - Smith 
personID - 1 

I pobrać JSON ...

[ 
    { 
     firstName: John, 
     lastName: Doe, 
     id: 1 
    }, 
    { 
     firstName: Michael, 
     lastName: Caine, 
     id: 2 
    }, 
    { 
     firstName: Angelina, 
     lastName: Jolie, 
     id: 3 
    } 
] 

bym chciał import dodać Michael i Angelina i do aktualizacja John Smith do John Doe, ponieważ już istnieje z tym samym identyfikatorem vs ID osoby.

Ustawiłem zmienną mappedKeyName pomiędzy id i idID.

Czy można to zrobić? Czytałem ten blog ... http://www.cimgf.com/2012/05/29/importing-data-made-easy/ o automatycznym odwzorowywaniu kluczowych nazw itp. ... i zastanawiałem się, czy mogę to wykorzystać do zrobienia tego, co chcę?

Przeczytałem część o relatedByAttribute z bloga, ale nie jestem pewien, gdzie powinienem ją ustawić i czego?

Czy powinienem ustawić go na jednostce Osoba? Lub atrybut personID? I do czego powinienem go ustawić? "ID"? Albo coś innego?

+0

Zobacz artykuł [Implementowanie funkcji Znajdź lub Utwórz automatycznie] (https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdImporting.html#//apple_ref/ doc/uid/TP40003174-SW4) w "Podręczniku programowania podstawowych danych", który opisuje dobrą technikę. –

+1

Używam już tej metody, dziękuję. Chcę przejść na Magical Record, aby użyć metod "automatycznego importu", które mają. – Fogmeister

Odpowiedz

6

Nie jestem pewien, czy używasz ustawienia relatedByAttribute w obszarze userInfo modelu Core Data. Nie wspominasz o tym w swoim wydaniu tutaj. Sugeruję, żebyś to sprawdził dwukrotnie. A w celu wyjaśnienia, jest to o nazwie relatedByAttribute, ponieważ ciąg znaków, który umieścisz w sekcji wartości, jest atrybutem CoreData, który odnosi encje, nie dane json (lub inny obiekt). Tak więc, sprawdź te dwie rzeczy i jeśli nadal występuje problem, otwórz bilet na github, najlepiej z testem jednostkowym, który pomaga opisać problem.

+0

Dzięki za odpowiedź, przeczytałem o relatedByAttribute ale pomyślałem, że to było dla relacji danych. W każdym razie zaktualizowałem moje pytanie. Dzięki. – Fogmeister

+0

Przeczytałem to jeszcze raz i jestem całkowicie zagubiony co do tego, gdzie powinienem ustawiać relatedByAttribute. Nie jest to relacja między podmiotami, które po prostu importuję pojedyncze podmioty Person z JSON. Proszę dać mi znać, gdzie muszę ustawić relatedByAttribute i co? Nie jestem pewien, czy powinienem ustawić go na encji lub atrybucie i jaką wartość mu nadać. Na blogu wspomina o tym tylko w związku, ale ja go nie mam. – Fogmeister

+3

Ustaw go na encji. Unikałem słowa "primaryKey" podczas ustawiania tego, aby trzymać się z dala od nomenklatury bazy danych. Możesz jednak myśleć o relatedByAttribute jako kluczu podstawowym. – casademora