Премини към съдържанието
Ремонт на покриви | Ремонт на покриви цени | Хидроизолация на покриви

  • 0

CoreData Relationships


iHustle

Въпрос

Здравейте,

занимавам се от известно време със SDK-то, програмирам си разни неща с XCode, почнах да ползвам CoreData, но това с връзките не ми става много ясно :unsure: Работил съм с релационни бази от данни, обектно ориентирани бази от данни и т.н.

Така....да приемем, че искам да имам 2 таблици - User, която да има ID и CityID, а другата таблица City - CityID, CityName. Без да правя релации мога да си ползвам данните от двете таблици в кода, след като генерирам класовете, но едва ли това е най-културният начин :)

Другият вариант е да махна CityID от Users таблицата, да направя в нея една релация с destination към таблицата City. Така в генерирания клас ще ми се появи поле от тип City. В такъв случай ще продължавам ли да имам нужда от CityID в таблицата City, след като не свързвам нещата по id? Може би CoreData-ta сама си прави тези връзки, но после лесно ли е взимането, променянето, вкарването на данни в таблиците?

Или има и още по-кадърен вариант?

Ако може и някой да даде някъде из нета нормално четиво по въпроса с relationships :)

Линк към коментара
Сподели в други сайтове

10 отговора на този въпрос

Recommended Posts

  • 0
Линк към коментара
Сподели в други сайтове

  • 0

Ами да, четох! Но там не правят пряко сравнение между CoreData бази и SQLite примерно. И не всичко става ясно :)

Иначе вчера намерих едно добро

с пример.
Линк към коментара
Сподели в други сайтове

  • 0

номера е да зададеш допълнително етикет на релацията ти към другата таблица ... с различните интерфейси става по различен начин ... ето ти прост пример как става с Perl

при две таблици

1) Users

Name - VARCHAR

CityID - SMALLINT

2) Cities

CityID - SMALLINT

Name - VARCHAR

задаваш при таблица Users да има relationship към Cities от вида belongs to, който да се казва city и след това в кода просто пишеш

print $user->name." ".$user->city->name;

това е за perl ( DBIx::Class )... иначе при повечето relationship mapper-и е по подобен начин ... само трябва да откриеш как да зададеш relationship-овете ... ;)

Линк към коментара
Сподели в други сайтове

  • 0

...

Другият вариант е да махна CityID от Users таблицата, да направя в нея една релация с destination към таблицата City. Така в генерирания клас ще ми се появи поле от тип City. В такъв случай ще продължавам ли да имам нужда от CityID в таблицата City, след като не свързвам нещата по id? Може би CoreData-ta сама си прави тези връзки, но после лесно ли е взимането, променянето, вкарването на данни в таблиците?

...

Това е правилният начин - добавяш релацията и махаш CityID полето от таблиците. CoreData-та ще си добави Primary Key в таблица City и съответното поле в таблица User и ще си направи връзката по тях. В последствие работата с данните е много лесна. ;)

Линк към коментара
Сподели в други сайтове

  • 0

Имам още въпроси относно CoreData, но да не пускам нова тема...

Къде се съхранява .sqlite файла, който всъщност съхранява базата и е съсздаден чрез CoreData? И как може да се отвори и разгледа после този файл със схемата на базата и т.н.?

Линк към коментара
Сподели в други сайтове

  • 0

Файла с базата се намира в Documents папката на приложението. Можеш да го отвориш с всеки sqlite tool - има ги много и най различни. Аз лично ползвам command-line tool-a на самия телефон или един addin за firefox. И двете не са кой знае какво ама то и много рядко ми се налага да ровя в базата - обикновенно го правя от любопитство. :)

Линк към коментара
Сподели в други сайтове

  • 0

На мен ми трябва, ако може този файл да се ползва от приложени за андриод, да не се прави цшлата база на ново. Проблема е, че не намирам папката на приложението. Търся в телефона - /var/mobile/Applications

Но изглежда май не е правилно. Самото приложение е качвано само от XCode. А не би ли трябвало базата да я има и на самия компютър, след като приложението съм до пускал и на симулатора?

Линк към коментара
Сподели в други сайтове

  • 0

Точно във /var/mobile/Applications трябва да е приложението ти. Иначе ги има и на симулатора ама ще ти кажа довечера къде точно, че в момента мак-а ми не е пред мен.

Линк към коментара
Сподели в други сайтове

  • 0

Четейки от извора:

/var/mobile/Applications/30B51836-D2DD-43AA-BCB4-9D4DADFED6A2/Documents

However, in iOS Simulator, the returned path is of the following form:

/Volumes/Stuff/Users/johnDoe/Library/Application Support/iOS Simulator/User/Applications/118086A0-FAAF-4CD4-9A0F-CD5E8D287270/Documents

ама малко тъпо ми се вижда това, че имената на папките са guid-ове и сега трябва да ги отварям всички папки една по една :wacko:

иначе съм пускал search и не намираше никакви .sqlite файлове на компа!

едит: най-накрая я изнамерих папката и вътре мирно си стоеше базата и я разгледах с фф :) довечера ще проверя и на лаптопа, дано и там я открия най-накрая :) Мерси за хелпа

Редактирано от iHustle
Линк към коментара
Сподели в други сайтове

Присъединете се към разговора

Можете да публикувате сега и да се регистрирате по-късно. Ако имате акаунт, влезте сега да публикувате с вашия акаунт.

Гост
Отговори на този въпрос...

×   Вмъкнахте текст, който съдържа форматиране.   Премахни форматирането на текста

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Разглеждащи в момента   0 потребители

    • Няма регистрирани потребители разглеждащи тази страница.
Ремонт на покриви | Ремонт на покриви цени | Хидроизолация на покриви

×
×
  • Добави ново...