我似乎在将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/

10-13 02:04