2015-03-02 14 views
6

Pracując nad aplikacją, która jest iOS 8 i obsługuje wiele zdjęć, muszę jednoznacznie identyfikować PHassets, ale nie mogę znaleźć żadnej właściwości do użycia? Znalazłem jedną właściwość naiOS 8, PhotoKit, PHAsset, unikalny identyfikator

PHObject/localIdentifier 

udokumentowany tutaj

https://developer.apple.com/library/ios/documentation/Photos/Reference/PHObject_Class/index.html#//apple_ref/occ/instp/PHObject/localIdentifier

Czy istnieje jakiś sposób, aby mieć unikatowy identyfikator na PHAsset? PHObject jest nieco cięższy w użyciu.

Odpowiedz

8

Tak, to jedyna właściwość do użycia.

Jednak PHObject implementuje metody -hash i -isEqual:. Jest również zgodny z protokołem NSCopying, co oznacza, że ​​może być używany jako klucz w słownikach i może być umieszczany w zestawach itp. Działa również po przeładowaniu obiektów PHAsset. To jest ogromna wygrana w stosunku do klasy ALAsset. Implementacja -isEqual jest znacznie szybsza niż właściwość localIdentifier i może być bezpiecznie używana w głównym wątku. Możesz użyć profilera, aby zorientować się, co kryje się pod maską.

+0

Witam, więc PHAsset ma właściwość .hash, ale czy muszę zaimplementować własną wersję? dla zestawu PHA? – Huang

+1

Nie, zestaw PHA implementuje oba protokoły, jak również protokół NSCopying. – kean

+0

Czy jest to globalnie unikalny identyfikator localIdentifier? – WYS

Powiązane problemy