2012-07-01 10 views
5

Obecnie przeglądając dokumentację i internecie, ale nie widzę co szukam i chciałbym tylko potwierdzić, czy to, co szukam istnieje :-)ios - DANE PODSTAWOWE aktualizowanie rekordów

jak rozumiem - ta linia kodu pozwala mi dodać rekord do bazy danych SQLite, które pokazuję w mojej aplikacji za pośrednictwem danych Core:

NSManagedObject *newSoftware = [NSEntityDescription insertNewObjectForEntityForName: 

teraz istnieje linia podobna do tej, która pozwala mi na aktualizację rekord, nad którym pracuję?

coś podobnego do tego?

NSManagedObject *newSoftware = [NSEntityDescription updateCurrentObjectForEntityForName: 

Dziękuję bardzo za opinie :-)

Odpowiedz

8

Oto moja poprzednia odpowiedź na ten temat. Jest dość szczegółowe, aby zrozumieć, co się dzieje.

How to update existing object in Core Data?

podstawie fumoboy007 komentarz, musisz zaktualizować swój obiekt koryta KVC jeśli nie utworzyły podklasy dla zarządzanego obiektu. Jeśli jeszcze tego nie zrobiłeś, proponuję go utworzyć. Kod wygląda na bardziej przejrzysty, ponieważ można uzyskać dostęp do zarządzanego obiektu za pośrednictwem właściwości.

Oto link na nim:

organising-core-data-for-ios

+0

Dzięki za szczegółową odpowiedź - Mam to działa :-) –

+0

Witam, nadal mam jedno pytanie, przepraszam, mam nadzieję, że nie masz nic przeciwko :-) Zamiast @ "title ==% @", @ "Some Title" ]; jak w linku, który mi dałeś, używam @ "name ==% @", self.appNameTxtFld.text]; Teraz problem polega na tym, że wszystkie moje wiersze informacji w tablicy zmieniają się nie tylko wybrane przeze mnie. Jak mogę być bardziej konkretny w moich działaniach? –

+0

@JeffKranenburg Przepraszam, nie rozumiem, może dodam zmianę do twojej odpowiedzi i wyjaśnię to tam. Spróbuję Ci pomóc. Dzięki. –

11

Aby zaktualizować rekord, wystarczy zaktualizować właściwości NSManagedObject „s. Jeśli używasz CoreData, powinieneś mieć NSManagedObject s dla każdego ze swoich "tabel". Uzyskaj odwołanie do obiektu po przeszukaniu bazy danych (przy użyciu NSFetchRequest). Następnie możesz zaktualizować rekord w ten sposób: myObject.firstName = "John"; Gdy będziesz gotowy do zaktualizowania obiektu w bazie danych Sqlite, po prostu zadzwoń pod numer NSManagedContext za pomocą metody save. Sugeruję grę z przykładową aplikacją CoreData (taką jak domyślna generowana przez Xcode), aby lepiej to zrozumieć.

+2

Uwaga: 'myObject.firstName = @ "John";' działa tylko wtedy, gdy tworzony podklasę NSManagedObject. Jeśli tego nie zrobiłeś, musisz wykonać '[myObject setValue: @" John "forKey: @" firstName "]'. – fumoboy007

+1

Mam tę konfigurację, zanim zadałem pytanie, ale zamiast aktualizować rekord, dodano go jako nowy. –

+0

Dobrze wyjaśnione, bez kodu. – andyPaul

Powiązane problemy