我正在尝试给NSDictionary键值设置CGSize,而XCode给了我这个错误。我的代码:

       NSArray *rows = @[
        @{@"size" : (CGSize){self.view.bounds.size.width, 100}
          }
        ];

为什么我在这里出现错误?如果无法在dict中存储CGSize,那么有什么替代方法?

编辑:
现在收到此代码的“使用类型'CGSize'(aka'struct CGSize'),其中需要算术,指针或向量类型”错误:
NSDictionary *row = rows[@0];
CGSize rowSize = [row[@"size"] CGSizeValue] ? : (CGSize){self.view.bounds.size.width, 80};

最佳答案

CGSize不是对象。这是一个C结构。如果需要将其存储在obj-c集合中,则标准方法是将其包装在NSValue中,如下所示:

NSArray *rows = @[
 @{@"size" : [NSValue valueWithCGSize:(CGSize){self.view.bounds.size.width, 100}]
  }
];

之后,当您需要取回CGSize时,只需调用-CGSizeValue方法即可,例如
CGSize size = [rows[0][@"size"] CGSizeValue];

关于objective-c - 类型 'CGSize'的集合元素不是Objective-C对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15487453/

10-09 16:20