OC基础教程11-结构体对象NSValue与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

时间: 2024-11-29 12:06:05

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

OC中常见的结构体,以及NSNumber、NSValue、NSDate的使用

常见的结构体 1 NSPoint和CGPoint 2 NSSize和CGSize 3 NSRect 和 CGRect NSPoint和CGPoint的使用 1 NSPoint和CGPoint是同义的 2 typedef CGPoint NSPoint; 3 CGPoint的定义 4 struct CGPoint{ 5 CGFloat x; 6 CGFloat y; 7 } 8 9 typedef struct CGPoint CGPoint; 10 typedef double CGFloat;

ios开发之封装自定义的结构体对象,CGRect,CGSize常用结构体基本使用

ios 中如何使用oc封装一个 结构体到  NSValue中呢? 方法如下: typedef struct{ //自定义一个结构体 int age; int number; }Student; NSValue *stu=[NSValue valueWithBytes:&stu objCtype :@encode(Student)];//把结构体封装成一个对象 Student value2;//定义一个结构体变量来接受从NSValue得到的结构体 [stu getValue:&value2]

C#基础知识---struct(结构体)

结构体和类有点类似    我们定义一个类的时候    是class   类名   定义结构体的时候是 struct   结构体名 下面我们来看看结构体的写法  以及一些注意点 struct Point { // public int x=10; 这种写法错误 public int x ; public int y; public int X { get { return x; } set { x = value; } } public void SayHi() { Console.WriteLi

C++结构体对象数组的二进制方式读写

以一个学生信息的结构体数组为例. #include<iostream>#include<string>#include<fstream>using namespace std;struct Student{public: int n;//学号 char name[20];//姓名 int age;//年龄};int main(){ const int N=3; Student a[N]; //下面进行输入每个学生信息for(int i=0;i<N;i++){ ci

将传入结构体 pMtInfo 中包含的数据内容转换成 JSON 字符串返回

upu_struct.h封装了有关  pMtInfo结构体的内容,用到的部分如下图所示: 利用jansson库实现将传入结构体 pMtInfo 中包含的数据内容转换成 JSON 字符串返回 代码如下: #include <stdio.h> #include <string.h> #include "jansson.h" #include "upu_struct.h" #include "upu_proto_parse.h"

&lt;摘录&gt;Gson对Java嵌套对象和JSON字符串之间的转换

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,具有良好的跨平台特性.近几年来已经和XML一样成为C/S架构中广泛采用的数据格式.有关JSON的更多知识,请参考以下内容:http://json.org/json-zh.html 在服务器和客户端之间使用JSON数据格式进行通信,经常会涉及到JAVA对象和JSON字符串之间的转换.通常,我们可以使用一些JSON解析工具,例如:Gson,FastJson等.当然,我们也可以手动解析,只是会比较繁琐. 下面

JSON对象和JSON字符串之间的转换

一.  JSON对象和JSON字符串之间的转换 json字符串----->json对象 使用JSON.parse()函数 var jsonStr = '{"name":"zhangsan","age":23,"email":"[email protected]"}'; var json = JSON.parse(jsonStr); console.log(json);//输出:Object {name

js 处理 xml对象和String字符串之间的转换

/** * xml工具 * xml对象和String字符串之间的转换 * ///convert string to xml object (将字符串转换成xml对象) function string2XML(xmlString) { //所有浏览器统一用这种方式处理(因为高版本的浏览器都支持) let parser = new DOMParser(); let xmlObject = parser.parseFromString(xmlString, "text/xml"); retu

oc基础第二天类与对象---1复习

1. OC语言是在C语言的基础之上新增了一些面向对象的语法. 将C语言复杂的.繁琐的.东西封装的更为简单和易用. Objective-C: 本质其实就是C语言. OC完全兼容C. 2. OC将C难用的东西做了封装. 1). #import指令. 2). NSLog()函数. 3). NSString @"jack" 新增了一些数据类型. BOOL class 类 3. 面向过程与面向对象. 4. 代码中的面向过程与面向对象. 5. 类与对象 类 对象 6. 类和对象的关系 类是模板 对