数组Array怎么保存CGRect变量

有时候我们开发会遇到这样一个问题:怎么将react或者point变量保存到数组Array中?如果暴力点的话,可能我们会这样做。

NSMutableArray * temp = [NSMutableArray array];

[temp addObject:CGRectMake(100, 100, 0, 100)];

很快就知道结果了,报错。

Paste_Image.png

数组不支持非对象类型,rect是结构体类型的数据结构。

那温柔点来,介绍一种办法来解决这个问题。

启发来源:@(1) 这样的写法。@(1)代表什么呢?

@(1),会将其转化成对象[NSNumber numberWithInt:5].

如果这样做的话,那么rect也是可以采用同样的做法.找了一些资料,有了如下的结果办法

添加:

声明一个结构体,包含了rect

struct ViewRect{

CGRect rect;

};

@interface ViewController ()

typedef struct ViewRect ViewRect; // 声明

@end

struct ViewRect left_up = {CGRectMake(0, 0, 100, 100)};

struct ViewRect left_down = {CGRectMake(0,100,200,100)};

NSMutableArray * temp = [NSMutableArray array];

[temp addObject:[NSValue valueWithBytes:&left_up objCType:@encode(ViewRect)]];

[temp addObject:[NSValue valueWithBytes:&left_up objCType:@encode(ViewRect)]];

取值:

采用值传递的原理取值。代码如下:

ViewRect viewRect;

NSValue * value = temp[0];

[value getValue:&viewRect];

NSLog(@"show result:%@",NSStringFromCGRect(viewRect.rect));

这样就额可以解决这个数组保存rect结构体的办法了。

你可能感兴趣的:(数组Array怎么保存CGRect变量)