2013-01-31 17 views
9

mam ten ENUM:Jak używać protokołu NSCoding z wyliczeniem?

typedef types { 
    HBIntineraryTypeVisited = 0, 
    HBIntineraryTypeUnvisited, 
    HBIntineraryTypeUnknown, 
    HBIntineraryTypeDeleted, 
} HBIntineraryType; 

i chcą przechowywać go wraz z kilkoma innymi zmiennymi za pomocą protokołu nscoding

- (id)initWithCoder:(NSCoder *)aDecoder 
{ 
    self = [super init]; 
    if (self) { 
     _name = [aDecoder decodeObjectForKey:@"name"]; 
     // todo decode enum object 
    } 
} 

- (void)encodeWithCoder:(NSCoder *)aCoder 
{ 
    [aCoder encodeObject:_name forKey:@"name"]; 
    // todo encode enum object 
} 

Co Coder sposób mogę korzystać dekodować i kodować tego rodzaju wyliczenia?

+1

'decodeInt' /' encodeInt' (z pewnym rzutowaniem). – trojanfoe

Odpowiedz

4

Ogólnie rzecz biorąc reprezentacja enum s może się różnić. Podczas pracy z Objective-C należy użyć the NS_ENUM macro, aby upewnić się, który typ jest używany do reprezentowania wyliczenia. Jest więcej tła w this article.

+2

Jest to wada polegająca na umieszczaniu linków jako odpowiedzi. Nigdy nie wiadomo, kiedy zaczną się wyświetlać 404 :( – Kaunteya

+0

Większość artykułów na blogu z Big Nerd Ranch zostało przeniesionych. Oto nowy adres URL: https://www.bignerdranch.com/blog/enum-num-num/ – Dustt