2015-05-04 1 views
0

После этого [post][1], я пытаюсь проанализировать числовую часть ObjectID в ManagedObject, где, по-видимому, присутствует автоматический прирост, который обычно не отображается через данные ядра api , Тем не менее, я всегда получаю 0 в качестве ответа.IOS/Core-data: Parse ManagedObject ObjectID, чтобы получить номер AutoIncrement

Кто-нибудь еще это сделал или может кто-нибудь понять, почему это не работает? Спасибо заранее за любые предложения.

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Item" inManagedObjectContext:self.managedObjectContext]; 

    Items *newItem = [[Items alloc]initWithEntity:entity insertIntoManagedObjectContext:self.managedObjectContext]; 
    NSURL *url = [[newItem objectID] URIRepresentation]; 
    //get full url 
    NSString *url_string = [url absoluteString]; 
     //split with a/
    NSArray *parts = [url_string componentsSeparatedByString:@"/"]; 

    NSString *last_segment=[parts objectAtIndex:[parts count]-1]; 

    //p# 
    NSString *number_part = [last_segment stringByReplacingOccurrencesOfString:@"p" withString:@""]; 

    NSUInteger auto_id = [number_part integerValue]; 

    number_part =nil; 
    last_segment=nil; 
    parts=nil; 
    url=nil; 
    url_string=nil; 
    NSUInteger final_id = auto_id; 
    NSLog(@"NOW DISPLAYING AUTOID: autoid is:%lu",(unsigned long)final_id); 
+1

Это невероятно плохая идея. Вы будете полагаться на недокументированное поведение, которое может измениться в любое время. Даже если вы заработаете, это ужасная, ужасная идея. –

+0

Идея о том, что за кулисами, которые не были показаны Core Data, была автоматической приращением, которая могла быть каким-то образом использована, была привлекательной. Однако из ObjectID, который появляется в журнале моего симулятора, похоже, что мой ObjectID не соответствует тому же соглашению об именах. Так что да, я отказываюсь от этой идеи. – user1904273

+0

Похоже, мне придется использовать универсальный идентификатор. Однако, справедливости ради, как было сказано по многим другим вопросам SO, синхронизация между приложением и сервером является нетривиальной, поэтому стоит изучить различные возможности. Мне еще нужно выяснить, как синхронизировать, не записывая записи на универсальные идентификаторы сервера. Глядя на метод Криса здесь http://stackoverflow.com/questions/5035132/how-to-sync-iphone-core-data-with-web-server-and-then-push-to-other-devices, но, возможно, используя сервер для генерации архивных автоматических добавочных идентификаторов и временного использования универсальных идентификаторов на клиенте приложения. – user1904273

ответ

0

Как упомянул Том Харрингтон, это абсолютно ужасная идея. Это недокументировано, может и будет изменяться, и у вас нет гарантии, что он будет продолжать увеличиваться между жизненными циклами приложения.

Создайте свой собственный уникальный идентификатор, не полагайтесь на -objectID.

+0

Да, я пришел к вашей точке зрения Тома и Тома. Я предполагаю, что для приложения мне придется использовать GUID, по крайней мере, до синхронизации, но все же надеемся сохранить автоматически увеличивающуюся схему, используемую на сервере. – user1904273

 Смежные вопросы

  • Нет связанных вопросов^_^