【问题标题】:How can i separate these strings in iOS如何在 iOS 中分离这些字符串
【发布时间】:2014-03-11 19:02:54
【问题描述】:

以下是使用 Json 序列化接收的示例数据

(
1c581b4a4ec43727,
39e0ec2adcf8bae4,
3a66203c191d9016,
3de3d080a7f1ae38
)

我尝试使用:

 NSArray *myVoucherCodes = [[NSArray alloc]init];
 myVoucherCodes = [[[json valueForKey:@"VoucherCodes"] objectAtIndex:0] componentsSeparatedByString:@","];
 vouchercode = myVoucherCodes[0];

但它崩溃了。我的错误:

-[__NSCFArray componentsSeparatedByString:]: unrecognized selector sent to instance 0x17d845b0

是因为它在另一行吗?如果是这样,我如何在代码中表示“下一行”?

【问题讨论】:

  • 看来数据已经通过 NSJSONSerialization 运行以生成 NSArray。那么为什么不直接遍历数组呢??
  • (看到() 字符?这意味着它是一个NSArray。{} 意味着它是一个NSDictionary。)
  • 我最初使用的是 [[json valueForKey:@"VoucherCodes"] objectAtIndex:0],它返回上面显示的整个数据集。
  • 天啊。我刚刚看到我的错误。感谢您的帮助!
  • 而[__NSCFArray componentsSeparatedByString:]: unrecognized selector... 告诉你,你认为的字符串实际上是一个 NSArray。

标签: ios nsstring nsarray separator


【解决方案1】:

而不是这样做

NSArray *myVoucherCodes = [[NSArray alloc]init];
 myVoucherCodes = [[[json valueForKey:@"VoucherCodes"] objectAtIndex:0] componentsSeparatedByString:@","];
 vouchercode = myVoucherCodes[0];

这样做

NSArray *voucherArray = [[NSArray alloc]init];
voucherArray = [json valueForKey:@"VoucherCodes"];

NSString *voucherString = [voucherArray objectAtIndex:0]

NSArray *myVoucherCodes = [[NSArray alloc]init];
myVoucherCodes = [voucherString componentsSeparatedByString:@","];

vouchercode = myVoucherCodes[0];

上面的代码不能解决你的问题。它会让你知道问题出在哪里。

【讨论】:

  • 因为数据已经是一个数组。我所要做的就是做 [[[json valueForKey:@"VoucherCodes"] objectAtIndex:0][0]
  • 没错。但是,如果您尝试不将所有内容嵌套在一行中,则更容易找到出错的地方,而不是在 Xcode 告诉您“componentsSeparatedByString 错误”时迷失方向。 (我个人将此作为一种好的做法,即使它会导致更多的代码行)
【解决方案2】:

因为数据已经是一个数组。我所要做的就是:

[[[json valueForKey:@"VoucherCodes"] objectAtIndex:0][0]

【讨论】:

    猜你喜欢
    • 2022-10-12
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多