2011-07-12 58 views
18

Làm cách nào để lưu giá trị enum vào từ điển?Lưu các giá trị enum vào từ điển

Khi tôi thử như sau

enum someEnum 
{ 
    field0 = 0, 
    field1 = 1, 
    field2 = 2, 
}; 

enum someEnum someEnumObject; 

và tôi cố gắng để lưu nó vào một cuốn từ điển sử dụng

[NSDictionary dictionaryWithObjectsAndKeys:]

someEnumObject, @"enum", 

tôi nhận được

này

cảnh báo: Issue Semantic: số nguyên không tương thích để chuyển đổi con trỏ gửi 'hành vi enum' để tham số có kiểu 'id'

Trả lời

47

Sử dụng sau đây để lưu nó vào từ điển,

[NSNumber numberWithInt:enumValue], @"enum", 

Và bạn có thể lấy nó như là,

enumValue = [[dictionary valueForKey:@"enum"] intValue]; 
7

Một enum về cơ bản là một số nguyên và các đối tượng một NSDictionary cửa hàng, vì vậy bạn cần phải chuyển đổi của bạn enum cho một đối tượng. Một NSNumber sẽ làm việc tốt cho việc này:

[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:someEnumObject], @"enum", nil]; 
9

Better sử dụng literals NSNumber để chuyển đổi một enum thành một đối tượng để nó có thể được lưu trữ trong NSDictionary:

[NSDictionary dictionaryWithObjectsAndKeys:@(someEnumObject), @"enum", nil]; 

Literals cung cấp shorthands để viết thứ, từ điển này có thể được viết như sau:

@{@"enum":@(someEnumObject)}; 

Đọc thêm về chữ ở đây: http://clang.llvm.org/docs/ObjectiveCLiterals.html

Các vấn đề liên quan