2010-08-24 29 views
111

Trước khi đặt giá trị int vào từ điển tôi đã đặt giá trị int là [NSNumber numberWithInt: 2], bây giờ khi tôi cố gắng truy xuất lại nội dung từ điển, tôi muốn nó trở lại trong int định dạng .. hw để làm điều này ??cách chuyển đổi NSNumber thành int trong Objective-C

đây là mã của tôi;

NSMutabelDictionary *dict = [[NSMutableDictionary alloc]init]; 
int intValue = 300; 

[dict setObject:[NSNumber numberWithInt:intValue] forKey:@"integer"]; 

khi truy xuất .........

int number = [dict ObjectForKey:@"integer"]; 

.. nó ném một ngoại lệ đúc sayin là cần thiết .. khi tôi làm theo cách này ..

int number = (int)[dict ObjectForKey:@"integer"]; 

stil it doesnt work ...

cách giải quyết vấn đề này?/

xin đề nghị ..

Trả lời

182

Có một cái nhìn tại documentation. Sử dụng phương thức intValue:

int number = [[dict objectForKey:@"integer"] intValue]; 
+2

Tên phương pháp là 'objectForKey: ', không phải' ObjectForKey: '(có sự khác biệt). – dreamlax

+0

@dreamlax: Đã xảy ra lỗi sao chép và dán, cảm ơn. –

+0

Chuyển đổi ngầm định hiện không được phép với ARC. – Alexander

53

Bạn nên dính vào các loại dữ liệu NSInteger khi có thể. Vì vậy, bạn muốn tạo ra các số như thế:

NSInteger myValue = 1; 
NSNumber *number = [NSNumber numberWithInteger: myValue]; 

giải mã làm việc với các integerValue phương pháp thì:

NSInteger value = [number integerValue]; 
+0

Tại sao anh ta nên dính vào 'NSInteger'? –

+0

'NSInteger' là kiểu nguyên thủy ** nhanh hơn ** trong khi thực thi' NSNumber' là một đối tượng. –

+0

Và 'int' là gì? Một nguyên thủy quá? –

0

Một cách tiếp cận ít tiết:

int number = [dict[@"integer"] intValue];