在以前的iPhoneOSes下,用于将自己标识为NSCFArray的对象现在似乎在运行iOS 4.0的设备下将自己标识为__NSArrayI.
知道这是怎么回事?我在任何文档中都找不到它.
另外,它与"[NSArray class]"不匹配.
它应该是一个简单的数组.它的定义如下:
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
thisPlayerName,@"name",
[NSNumber numberWithInt:[myTable.visiblePlayer.number intValue]],@"number",
playerCountArray,@"players",
[NSArray arrayWithObjects:@"easy",@"medium",@"hard",nil],@"opponent difficulty",
[NSNumber numberWithBool:[cardDecks getOptionBoolForKey:@"seeMoney"]],@"see money",
[cardDecks gameSpeedOptions],@"computer turn speed",
[NSArray arrayWithObjects:@"aqua",@"green",@"orange",@"purple",@"red",nil],@"player color",
nil];
Run Code Online (Sandbox Code Playgroud)
然后输入另一个字典,如下所示:
myRecord = [[NSMutableDictionary alloc] initWithCapacity:5];
[myRecord addEntriesFromDictionary:newDictionary];
Run Code Online (Sandbox Code Playgroud)
其他所有类都有我期望的类:NSCFString,NSCFNumber,NSCFBoolean,但不是数组,我无法弄清楚如何匹配它.
为什么会这样?因为我们不能信任从一个版本到另一个版本的类的内部名称.
怎么搭配呢?不要尝试匹配类的名称或等同于类.只需使用isKindOfClass:它将匹配一个类及其子类,并为像这样的奇怪变体做正确的事情.
例如:
} else if ([thisValue isKindOfClass:[NSArray class]]) {
Run Code Online (Sandbox Code Playgroud)
请注意,您要将isKindOfClass:消息发送到对象,而不是 [object class]!
| 归档时间: |
|
| 查看次数: |
1948 次 |
| 最近记录: |