我似乎在将 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,并将其粘贴到具有相同结果的字典中来手动分解它。
感谢任何帮助。谢谢
谢谢。
最佳答案
参数的顺序应该是(object, key, object, key, …),所以在你的代码中对象是@"Crocodile"
,key是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/