2013-06-20 3 views
0

Возможно ли получить номер из столбца Z_PK, созданного Core Data? Если да, вы бы получили этот столбец так же, как вы бы извлекли атрибуты, созданные вручную в модели?Z_PK Столбец в базе данных основных данных

+1

Зачем вам нужен ключевой ключ _? 'CoreData' очень хорошо создает аксессуар, работа с первичными ключами не является обычной практикой с« CoreData ». – holex

+0

Мне просто нужен уникальный идентификатор для ссылки на каждую сущность. Было просто любопытно, если использование первичного ключа было лучше, чем создание моего собственного уникального атрибута. Основываясь на ответе Кевина, я просто собираюсь создать свою собственную. – JRo

ответ

2

Вы можете использовать sqlite для прямого доступа к столбцам, созданным CoreData.

Однако вы не должны зависеть от того, что Z_PK или любой из столбцов остаются неизменными. Схема может меняться (и имеет) между выпусками. Apple заявила об этом в видеороликах WWDC.

+0

Спасибо, Кевин. Это очень хороший момент. Я видел некоторые из видеоматериалов с базой данных WWDC, но не помнил об этом. – JRo

0

ios read z_pk from sqlite coredata

Смотрите эту ссылку, чтобы узнать больше. Как я знаю, мы не можем получить Z-PK из основных данных. Но вы можете это знать, сохраняя файл основных данных, такой как файл sqlite, и можете проверить его по запросу.

4

z_pk не является атрибутом, который вы можете получить, как и любые другие атрибуты. Что вы можете сделать, так это извлечь значение z_pk из managedObjectID вашего лица

Управляемый объект может быть получен с использованием [self objectID]. Для этого примера мы возьмем это одно:

<x-coredata://03C5C895-3245-4D0F-8B6B-7758582AE16B/<your-Entity>/p5> 

p5 в конце концов, это z_pk. (Для этого магазина и для этого лица в настоящее время он может измениться)

Не знаете, что вам нужно для z_pk, или в каком формате. Давайте преобразовать managedObjectID в строку:

NSString *aString = [[[self objectID] URIRepresentation] absoluteString]; 

Из строки извлечения 5:

NSArray *theComponents = [aString componentsSeparatedByString:@"/p"]; 
    NSInteger theZpk = [[theComponents lastObject] intValue]; 

Теперь у вас есть z_pk как int и может обрабатывать его, как вам нравится.

+0

Спасибо Olaf. Я решил пойти другим путем, так как z_pk может измениться. – JRo