Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 仅包含@ist的NSString不符合键值_Ios_Objective C_Nsdictionary_Key Value_Key Value Coding - Fatal编程技术网

Ios 仅包含@ist的NSString不符合键值

Ios 仅包含@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:@"@"]; 将其设置为键是可以的,但不查询该键。。 当然,您可以通过附加一些其他

为什么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:@"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.