Ios 仅包含@ist的NSString不符合键值
为什么NSStringIos 仅包含@ist的NSString不符合键值,ios,objective-c,nsdictionary,key-value,key-value-coding,Ios,Objective C,Nsdictionary,Key Value,Key Value Coding,为什么NSString@“@”不符合键值? 是否还有其他字符串不兼容 您可以尝试使用以下代码确定它是否失败,例如: NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; [dict setObject:@"Some Object" forKey:@"@"]; NSString *theObject = [dict valueForKey:@"@"]; 将其设置为键是可以的,但不查询该键。。 当然,您可以通过附加一些其他
@“@”
不符合键值?
是否还有其他字符串不兼容
您可以尝试使用以下代码确定它是否失败,例如:
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setObject:@"Some Object" forKey:@"@"];
NSString *theObject = [dict valueForKey:@"@"];
将其设置为键是可以的,但不查询该键。。
当然,您可以通过附加一些其他字符串来解决此错误,稍后您可以在另一时间删除这些字符串,如在需要密钥@时执行以下操作:
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setObject:@"Some Object" forKey:@"keyConst@"];
NSString *theObject = [dict valueForKey:@"keyConst@"];
setObject:forKey:
的对应项是
objectForKey:
(而不是valueForKey:
)要从字典中检索项:
NSString *theObject = [dict objectForKey:@"@"];
或者,使用“新”字典订阅语法:
dict[@"@"] = @"Some Object";
NSString *theObject = dict[@"@"];
valueForKey:
如果键以@
开头,则使用键值编码方法。
从-[NSDictionary valueForKey:
的文档中:
如果键不以“@”开头,则调用objectForKey:
。如果钥匙有
以“@”开头,去掉“@”并用
钥匙的其余部分
比如说,
NSString *x = [dict valueForKey:@"@description"];
与
NSString *x = [dict description];
因此,在几乎所有情况下,您都应该使用objectForKey:
,除非您明确
想做一些键值编码魔术。与
setObject:forKey:
对应的是
objectForKey:
(而不是valueForKey:
)要从字典中检索项:
NSString *theObject = [dict objectForKey:@"@"];
或者,使用“新”字典订阅语法:
dict[@"@"] = @"Some Object";
NSString *theObject = dict[@"@"];
valueForKey:
如果键以@
开头,则使用键值编码方法。
从-[NSDictionary valueForKey:
的文档中:
如果键不以“@”开头,则调用objectForKey:
。如果钥匙有
以“@”开头,去掉“@”并用
钥匙的其余部分
比如说,
NSString *x = [dict valueForKey:@"@description"];
与
NSString *x = [dict description];
因此,在几乎所有情况下,您都应该使用objectForKey:
,除非您明确
想做一些键值编码魔术。寓意:永远,永远RTFM。(阅读格式化的I/O手册。)寓意:总是,总是RTFM。(阅读格式化的I/O手册。)不知何故,我多年来一直在用Cocoa编写代码,却从未知道这一点+1我是如何多年来一直使用Cocoa编写代码的,对此我一无所知+1.