带@符号的NSDictionary键
像这样在这里问如果一个键启动@符号使用valueForKeyPath on NSDictionary?
如果我必须使用像“@ID”和“@Name”(服务器端的限制,我没有控制命名)键的NSDictionary我怎么能解决这个问题? 现在,每当我尝试访问这种密钥的应用程序只是崩溃。
如前所述,你不能这样做。 解释Apple Docs注册 密钥格式 –
密钥必须使用ASCII编码,以小写字母开头,可能不包含空格。
所以试图用@..
作为开始键不会削减它。 我build议你这样做 – 因为你不能改变你的后端发送密钥的方式,你可以控制如何在iOS中表示这些密钥。 所以一旦你得到钥匙删除开始@
符号,并插入其余的string作为关键。 由于@
在所有键上都是恒定的,所以从所有键中移除它们都不会影响字典的基数。
如果在用不规则键获取字典之后尝试转换字典呢?
这个想法是这样的, 是的,它是线程安全的 :
NSDictionary *_dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"value", @"@ID", @"value2", @"@Name", nil]; NSMutableDictionary *_mutableDictionary = [NSMutableDictionary dictionary]; NSLock *_lock = [[NSLock alloc] init]; [_dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { if ([_lock tryLock]) { NSString *_newKey = [key stringByReplacingOccurrencesOfString:@"@" withString:@""]; [_mutableDictionary setValue:obj forKey:_newKey]; [_lock unlock]; } }]; NSLog(@"ID : %@", [_mutableDictionary valueForKey:@"ID"]); NSLog(@"Name : %@", [_mutableDictionary valueForKey:@"Name"]);
- NSUserActivity越区切换不适用于自定义数据
- 在上下文崩溃的情况下保存核心数据
- 从iPhone应用程序启动Google地图应用程序。
- 当用户以编程方式单击swift ios中的删除按钮时,如何自动将光标从一个文本字段移动到另一个文本字段?
- Swift 3使用NSAttributedString呈现textview,但要更改默认的字体
- UITableView上的UIMenuController尽pipe有所有的方法都不会显示出来
- 由于UI点击手势Swift解决方案,没有调用didSelectRowAtIndexPath?
- 如何获得在iPhone画廊的图像的path
- 渐变animation – 慢下来,加快速度