How to use NSCoding protocol with an enum?
Asked Answered
I

1

10

i have this enum:

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

and want to store it along with some other variables using the nscoding protocol

- (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
}

What coder method do i use to decode and encode this kind of enum?

Intercontinental answered 31/1, 2013 at 9:51 Comment(1)
decodeInt/encodeInt (with some casting).Motorman
R
5

Generally speaking the representation of enums can vary. When working with Objective-C, you should use the NS_ENUM macro to be sure of which type is used to represent the enumeration. There's more background in this article.

Rafi answered 31/1, 2013 at 9:55 Comment(2)
This is the drawback of putting links as answer. You can never tell when they would start showing 404 :(Sublapsarianism
Most blog articles from Big Nerd Ranch were moved. Here is the new url: bignerdranch.com/blog/enum-num-numLarghetto

© 2022 - 2024 — McMap. All rights reserved.