我正在尝试将一个NSDictionary键值赋予CGSize,而XCode正在给我这个错误。我的代码:
NSArray *rows = @[
@{@"size" : (CGSize){self.view.bounds.size.width, 100}
}
];
为什么我在这里收到错误?如果不可能将CGSize存储在dict中,那么还有什么替代方法呢?
修改 现在获得“使用类型'CGSize'(又名'struct CGSize'),其中需要算术,指针或向量类型”此代码出错:
NSDictionary *row = rows[@0];
CGSize rowSize = [row[@"size"] CGSizeValue] ? : (CGSize){self.view.bounds.size.width, 80};
答案 0 :(得分:24)
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];
答案 1 :(得分:0)
凯文的答案仅适用于iOS;对于Mac OS X(Cocoa)来说:
[NSValue valueWithSize:NSMakeSize(self.view.bounds.size.width, 100)];