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

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

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

CGRectFromString()做同样的事情,只为CGRect. 我怎样才能为自己的结构做到这一点?

4

2 回答 2

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}"

于 2013-08-13T05:57:19.833 回答
2

如果有 rect 的功能,则意味着它默认不工作。

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

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

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

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

但是,如果您从服务器或其他函数获取字符串,则必须创建函数来执行此操作。您可以解析字符串并初始化 4 浮点值。

此链接将帮助您将字符串分成多个部分:将字符串拆分为数组

一切顺利。

于 2013-08-13T05:47:19.600 回答