从NSString获取CGSize

sha*_*988 1 objective-c ios

在我的Web服务响应中,我得到了我的一个JSON密钥的值,如下所示:

{
dimensions = "1200, 800";
displayName = "something";
displayNumber = 1;
}
Run Code Online (Sandbox Code Playgroud)

我需要将维度字符串转换为CGSize变量,我使用以下代码.我将JSON字典添加到NSDictionary名称wardsDictionary并执行以下操作:

NSString *dimensionsString = (NSString *)[wardsDictionary objectForKey:@"dimensions"];
CGSize wardDimensions = CGSizeFromString(dimensionsSizeString);
NSLog(@"the dimensions string: %@",dimensionsString);
NSLog(@"the width: %@ and height:%@", wardDimensions.width, wardDimensions.height);
Run Code Online (Sandbox Code Playgroud)

结果是:

the dimensions string: "1200, 800"
the width: 0.0000 and height:0.0000
Run Code Online (Sandbox Code Playgroud)

现在我要做的是将组件分隔为","并从中获取CGSize变量.但有没有一种直接实现这一目标的好方法?

Goo*_*oug 7

问题是CGSizeFromString要求字符串采用以下格式:"{1200, 800}"您可以将括号附加到任一侧,或者执行以下操作componentsSeparatedByString:@","然后获取intValue组件:

NSArray *parts = [dimensionsString componentsSeparatedByString:@","];
float width = [parts.firstObject floatValue];
float height = [parts.lastObject floatValue];
CGSize size = CGSizeMake(width, height);
Run Code Online (Sandbox Code Playgroud)

  • 如果Web服务的响应不正确,建议使用`firstObject`和`lastObject`而不是通过索引访问每个"part". (2认同)