美文网首页
iOS开发结构体如何存入数组中

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

作者: Nest0912 | 来源:发表于2017-09-01 11:47 被阅读0次

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];

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

+ (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对象再加入数组中,代码如下:

//自定义结构体

typedef struct Books

{

NSString *title;

NSString *author;

NSString *subject;

int  book_id;

} book;

//初始化结构体数据

book book1 = {@"首页",@"作者",@"子类",1};

book book2 = {@"首页",@"作者",@"子类",2};

book book3 = {@"首页",@"作者",@"子类",3};

//存入数据

NSValue *customValue1 = [NSValue valueWithBytes:&book1 objCType:@encode(struct  Books)];

NSValue *customValue2 = [NSValue valueWithBytes:&book2 objCType:@encode(struct  Books)];

NSValue *customValue3 = [NSValue valueWithBytes:&book3 objCType:@encode(struct  Books)];

NSMutableArray *books = [NSMutableArray arrayWithObjects:customValue1,customValue2,customValue3, nil];

//取出数据

[books enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {

book value;

NSValue *customValue = obj;

[customValue getValue:&value];

NSLog(@"%d",value.book_id);

}];

相关文章

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

    1、常见结构体的储存 比较常见的结构体:CGPoint ,CGSize,CGRect。。。。。。我们如何存放到数组...

  • c语言结构体类型的多维数组的读取

    定义一个结构体 定义一个结构体数组 为结构体数组赋值 定义一个函数为结构体数组中的数组赋值

  • 结构体数组的定义

    结构体数组的定义 1、先定义结构体类型,再定义结构体数组 2、定义结构体类型的同时定义结构体数组 3、省略结构体类...

  • golang入门到放弃:4.结构体

    定义 eg: 结构体数组 结构体数组 定义 结构体数组名 [元素个数]结构体类型 eg//var arr [5]P...

  • C语言 13 结构体数组

    C语言 13 结构体数组 结构体数组的定义 结构体数组初始化 结构体成员的使用 格式 : 字符串成员的处理 结构体...

  • 我来教你:结构体怎么存入数组

    结构体不是对象,无法保存,如果需要保存该咋办?这里需要用到:结构体与字符串的相互转换 结构体转为字符串:NSStr...

  • iOS 结构体存入字典以及读取

    字典内只能存储对象,非对象数据就需要转成对象来存储。比方说基本类型NSInteger、CGFloat等等用@()包...

  • 结构体与数组的关系

    结构体与数组的关系 结构体是数组的成员 一个数组的全部元素是结构体变量

  • iOS中编写高效能结构体的7个要点

    iOS中编写高效能结构体的7个要点iOS中编写高效能结构体的7个要点

  • 13-结构体

    在iOS开发中,结构体是经常用到的数据类型,使用频率不亚于指针,所以需要重视。 一、什么是结构体 当一个整体由多个...

网友评论

      本文标题:iOS开发结构体如何存入数组中

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