2012-01-24 31 views

Trả lời

15

Bạn có thể đặt bất kỳ loại đối tượng thành một NSDictionary. Vì vậy, trong khi @"fred" là OK, 1 là không, như một số nguyên không phải là một đối tượng. Nếu bạn muốn đặt một số trong từ điển, hãy đặt số đó trong một từ điển NSNumber:

NSDictionary *header = { @"title": @"fred", @"count": @1 }; 
+2

Thú vị. Tôi được sử dụng để C#, nơi tất cả mọi thứ là một đối tượng. Cảm ơn. – ChrisP

0

Không phải cách bạn có. Số 1 là một nguyên thủy và đối tượng NSArray chỉ có thể chứa các đối tượng. Tạo một NSNumber cho "1" và sau đó nó sẽ lưu trữ nó.

0

Một NSDictionary chỉ có thể chứa các đối tượng Objective-C trong nó (chẳng hạn như NSStringNSArray), nó có thể không chứa các loại nguyên thủy như int, float, hoặc char*. Với những ràng buộc đó, các từ điển không đồng nhất hoàn toàn hợp pháp.

Nếu bạn muốn bao gồm một số như 1 như một chìa khóa hoặc giá trị, bạn nên bọc nó với một NSNumber:

NSDictionary *header=[[NSDictionary alloc] initWithObjectsAndKeys: 
    @"fred", @"title", 
    [NSNumber numberWithInt:1], @"count", 
    nil]; 
0

Yêu cầu duy nhất là một đối tượng. Tùy thuộc vào bạn để xử lý các đối tượng đúng trong mã của bạn, nhưng có lẽ, bạn có thể theo dõi các loại của chúng dựa trên các phím.

1 không phải là một đối tượng. Nếu bạn muốn đặt một số vào một từ điển, bạn có thể muốn chuyển nó thành một NSNumber.

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