@"{0, 1.0, 0, 1.0}"
我希望将上面的字符串转换为这样的结构:
struct MyVector4 {
CGFloat one;
CGFloat two;
CGFloat three;
CGFloat four;
};
typedef struct MyVector4 MyVector4;
CGRectFromString()
做同样的事情,仅针对CGRect
。我怎么能为自己的结构做到这一点?
答案 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}"