我似乎在将CGRect
存储到NSDictionary
中时遇到问题。我正在使用的代码:
dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"Crocodile", [NSValue valueWithCGRect:CGRectMake(100,100,200,200)], nil];
根据我的阅读,应该将
CGRect
包装成NSValue
并将其存储到字典中。但是,当我尝试对其进行
NSLog
编码时,该值返回为{{0,0},{0,0}}NSLog(@"Crocodile value is: %@", NSStringFromCGRect([[dictionary objectForKey:@"Crocodile"] CGRectValue]));
我已经检查了字典数,并且似乎插入了项目。我不确定这在哪里失败。我还尝试通过创建
CGRect
var,然后是NSValue
var,并将其粘贴到具有相同结果的字典中来手动将其分解。任何帮助表示赞赏。谢谢
谢谢你。
最佳答案
参数的顺序应为(对象,键,对象,键等),因此在您的代码中,对象为@"Crocodile"
,键为rect。
交换它们,它应该可以工作:
dictionary = [NSDictionary dictionaryWithObjectsAndKeys:
[NSValue valueWithCGRect:CGRectMake(100,100,200,200)], // object first…
@"Crocodile", // …then key
nil];
请注意,键不必是NSString的实例,它们可以是符合NSCopying的类的任何实例。
关于iphone - NSDictionary无法正确存储CGRect?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8670995/