CGRectFromString()用于常规结构

时间:2013-08-13 05:39:40

标签: ios objective-c

@"{0, 1.0, 0, 1.0}"

我希望将上面的字符串转换为这样的结构:

struct MyVector4 {
    CGFloat one;
    CGFloat two;
    CGFloat three;
    CGFloat four;
};
typedef struct MyVector4 MyVector4;

CGRectFromString()做同样的事情,仅针对CGRect。我怎么能为自己的结构做到这一点?

2 个答案:

答案 0 :(得分:2)

如果有一个rect函数,则表示它默认不起作用。

您必须创建自己的函数,例如MyVector4FromString。

您可能想知道您也可以像这样初始化struct对象。

MyVector4 v1 = {1.1, 2.2, 3.3, 4.4};

这是一种非常简单的C语法。所以我认为你不需要从字符串初始化。
见这里:4.7 — Structs

但是,如果您从服务器或其他功能获取字符串而不是是,您必须创建您的功能来执行此操作。您可以解析字符串和init 4浮点值。

此链接将帮助您分割多个部分的字符串:Split a String into an Array

一切顺利。

答案 1 :(得分:2)

可以通过以下方式完成:

 -(MyVector4)myVector4FromString:(NSString*)string
    {
        NSString *str = nil;
        str = [string substringWithRange:NSMakeRange(1, string.length - 1)];
        NSArray *strs = [str componentsSeparatedByString:@","];

        MyVector4 myVec4 = {0,0,0,0};
        for (int i=0; i<4; i++)
        {
            CGFloat value = ((NSString*)[strs objectAtIndex:i]).floatValue;

            if (i==0) { myVec4.one = value; } else
            if (i==1) { myVec4.two = value; } else
            if (i==2) { myVec4.three = value; } else 
            if (i==3) { myVec4.four = value; }
        }

        return myVec4;
    }

此函数可以解析问题中显示的格式的字符串,如@"{12.0,24.034,0.98,100}"