【iOS开发】结构体如何存入数组中

来源:互联网 发布:python入门经典书籍 编辑:程序博客网 时间:2024/05/29 03:55

1、常见结构体的储存

比较常见的结构体:CGPoint  ,CGSize,CGRect。。。。。。我们如何存放到数组中呢?因为是结构体不是对象,不能添加到数组中,解决方法:把这些常见的结构装换成对象,让后放进去,取出来在装换成结构体使用。我们想到了NSValue使用方法如下:

  CGPoint point = CGPointMake(0, 0);    NSMutableArray *array = [[NSMutableArray alloc]initWithCapacity:0];    NSValue *value = [NSValue valueWithCGPoint:point];    [array addObject:value];

取出数组之后的对象的使用:

 NSValue *tmpValue = array[0];    CGPoint tmpPoint = [tmpValue CGPointValue];

下面是一些常见的结构体使用方法是一样的

@interface NSValue (NSValueUIGeometryExtensions)+ (NSValue *)valueWithCGPoint:(CGPoint)point;+ (NSValue *)valueWithCGVector:(CGVector)vector;+ (NSValue *)valueWithCGSize:(CGSize)size;+ (NSValue *)valueWithCGRect:(CGRect)rect;+ (NSValue *)valueWithCGAffineTransform:(CGAffineTransform)transform;+ (NSValue *)valueWithUIEdgeInsets:(UIEdgeInsets)insets;+ (NSValue *)valueWithUIOffset:(UIOffset)insets NS_AVAILABLE_IOS(5_0);- (CGPoint)CGPointValue;- (CGVector)CGVectorValue;- (CGSize)CGSizeValue;- (CGRect)CGRectValue;- (CGAffineTransform)CGAffineTransformValue;- (UIEdgeInsets)UIEdgeInsetsValue;- (UIOffset)UIOffsetValue NS_AVAILABLE_IOS(5_0);@end

2、自定义结构体的存储

同样是先转换NSValue对象再加入数组中,代码如下:

//   自定义的结构体    struct Test {        int ID;        CGFloat  height;    };    typedef struct Test Test;    //    封装数据    Test tmpTest;    tmpTest.height = 80.0;    tmpTest.ID = 100;    NSLog(@"id==%d,height==%f",tmpTest.ID,tmpTest.height);        NSValue *customValue = [NSValue valueWithBytes:&tmpTest objCType:@encode(struct Test)];//    取出数据    Test tmpTest1;    [customValue getValue:&tmpTest1];    NSLog(@"id==%d,height==%f",tmpTest1.ID,tmpTest1.height);

关于存到数据组和上面的一样就不在写了




0 0
原创粉丝点击