iphone - NSDictionary 没有正确存储 CGRect?

标签 iphone objective-c ios ipad

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

相关文章:

ios - TextView 中的按钮

ios - 如何允许生成的 Sprite 与世界其他部分发生碰撞?

iphone - Cocos2d、iOS : what is the correct way to remove sprites from cache?

iphone - 如何清除 UITableViewCell 上的删除确认状态

ios - 如何判断 CBCentralManager 是否仍在处理 scanForPeripheralsWithServices?

ios - 这个segue在iOS9中还存在吗?

iphone - 以编程方式从 PC/Mac 读取 iPhone 文件

ios - AdMob 在已发布的应用程序中显示测试插页式广告

objective-c - 呈现模态视图 Controller 隐藏导航栏

ios - Swift3:didSelectRowAt 推送到未调用的 segue