gpt4 book ai didi

objective-c - 'CGSize' 类型的集合元素不是 Objective-C 对象

转载 作者:太空狗 更新时间:2023-10-30 03:30:29 25 4
gpt4 key购买 nike

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

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

为什么我在这里收到错误?如果无法将 CGSize 存储在字典中,那么有什么替代方法?

编辑:现在在需要算术、指针或向量类型的地方出现“使用类型‘CGSize’(又名‘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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com