【问题标题】:ios5 error when trying to shorten a string尝试缩短字符串时出现 ios5 错误
【发布时间】:2012-01-30 13:41:51
【问题描述】:

我有这个字符串:“str is {( 你, 我 )}"

查看 SO,我发现了这个 post 和这个 one(以及其他)

我想删除前导 {( 和尾随 )}

到目前为止,每个解决方案都遇到了错误:

-[__NSCFSet length]: unrecognized selector sent to instance

或类似的变体。我可以将值打印到控制台,并且可以在我的应用程序的其他地方使用未经过滤的“peopleExport”。

到目前为止我尝试过的代码包括:

NSString *str = (NSString *)[managedObject valueForKeyPath:@"people.name"];

    NSLog(@"str is %@", str);

    //NSString *string = @"hello one two three";

    //NSString *newStr = [str substringFromIndex:3];
    str = [str substringWithRange:NSMakeRange(2, str.length-2)];


    NSString *newStr;

    if ( [str length] > 0){
        NSLog(@"a");
    newStr = [str substringFromIndex:2];
    } else {
        NSLog(@"b");
        newStr = str;
    }

    NSLog(@"%@", newStr);

    peopleExport = newStr;

来源来自核心数据存储。这有关系吗?

我将不胜感激。

【问题讨论】:

  • 你确定这是一个来自 coredata 的字符串吗?看起来您正在尝试将 NSSet 转换为 NSString。
  • NSSet 的内容取决于你的数据模型。通常,一个 NSSet 将包含一对多关系末尾的实体。你的数据模型是什么样的?

标签: objective-c xcode ios5 substring


【解决方案1】:

在我看来str 实际上不是NSString,而是NSSet,您看到的是在该集合上调用-description 方法的结果。如果你想要的是“你,我”形式的字符串,试试这个:

NSSet *set = [managedObject valueForKeyPath:@"people.name"];
NSString *newString = [[set allObjects] componentsJoinedByString:@", "];

【讨论】:

  • 你们太棒了..就是这样..我会把你们都标记出来,但是当我使用他的代码时,我会给 Wevah 答案。谢谢大家!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-16
  • 2014-12-09
  • 2022-09-22
  • 2011-09-03
  • 2022-01-11
相关资源
最近更新 更多