美文网首页
数组Array怎么保存CGRect变量

数组Array怎么保存CGRect变量

作者: Freedom_Coco | 来源:发表于2017-09-06 17:20 被阅读23次

    有时候我们开发会遇到这样一个问题:怎么将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变量

          本文链接:https://www.haomeiwen.com/subject/ynsvjxtx.html