码迷,mamicode.com
首页 > 其他好文 > 详细

OC基础教程11-结构体对象NSValue与NSString之间的转换

时间:2015-06-08 13:30:38      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:nsvalue与结构体互转   结构体对象   oc结构体与nsstring转换   

NSValue简介

NSValue是结构体的对象类型,它为我们封装了一系列的很好的方法

可以方便的把结构体转为对象类型


1.把普通的结构体转化为NSValue类型

+ (NSValue *)valueWithPoint:(NSPoint)point;
+ (NSValue *)valueWithSize:(NSSize)size;
+ (NSValue *)valueWithRect:(NSRect)rect;
+ (NSValue *)valueWithEdgeInsets:(NSEdgeInsets)insets 

对于我们常见的结构体类型,我们可以使用上面的方法来转化为一个对象

常见的结构体内部定义如下:

(1)CGRect  

CGRect定义

/* Rectangles. */

struct CGRect {
  CGPoint origin;
  CGSize size;
};
typedef struct CGRect CGRect;

CGRect是一个矩形结构体,里面包含了 一个左上角点,orgin也就是 x,y坐标

还包含了一个Size是矩形的宽和高

(2)CGPoint

CGPoint定义

/* Points. */

struct CGPoint {
  CGFloat x;
  CGFloat y;
};
typedef struct CGPoint CGPoint;

CGPoint是一个包含x,y的结构体

CGFloat 是double类型的别名

(3)CGSize

CGSize定义

/* Sizes. */

struct CGSize {
  CGFloat width;
  CGFloat height;
};
typedef struct CGSize CGSize;

CGSize是一个 包含宽和高的结构体


使用示例:

CGRect转换为NSValue

CGRect rect = CGRectMake(100, 100, 100, 100);
        NSValue *rect1 = [NSValue valueWithRect:rect];

CGPoint转换NSValue

        CGPoint po = CGPointMake(100, 100);
        NSValue *po1 = [NSValue valueWithPoint:po];
CGSize转换为NSValue

CGSize size = CGSizeMake(100, 100);
        NSValue *size1 = [NSValue valueWithSize:size];


2.把NSValue转换为对应的结构体

可以使用NSValue对象的属性来获取其 结构体的值

@property (readonly) NSPoint pointValue;
@property (readonly) NSSize sizeValue;
@property (readonly) NSRect rectValue;
@property (readonly) NSEdgeInsets edgeInsetsValue

示例:

获取CGRect值

CGRect rec = [rect1 rectValue];

获取CGPoint值

CGPoint  po2 = [po1 pointValue];

获取CGSize值

 CGSize size2 = [size1 sizeValue];

3.CGRect,CGSize结构体与NSString字符串互相转换

把 结构体 和 NSString相互转换,请参见:

http://blog.csdn.net/yangbingbinga/article/details/43105597










OC基础教程11-结构体对象NSValue与NSString之间的转换

标签:nsvalue与结构体互转   结构体对象   oc结构体与nsstring转换   

原文地址:http://blog.csdn.net/yangbingbinga/article/details/46409965

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!