【问题标题】:Building an NSstring out of an NSMutableArray从 NSMutableArray 构建 NSstring
【发布时间】:2010-11-30 17:48:50
【问题描述】:

我的眼睛因数小时试图弄清楚这一点而受伤 - 我已经在网上寻找了很长一段时间的答案(说出多少会很尴尬......)。 我要做的就是在 anExpression 上使用 for-in 循环进行枚举,这是一个包含 NSNumbers 和 NSStrings 的 NSMutableArray。 我的变量 ans 的 NSLog 打印返回一个空字符串。 我做错了什么?

  NSString *ans = @"";
    for (id obj in anExpression)
    {
        if ([obj isKindOfClass:[NSString class]])
            [ans stringByAppendingString:(NSString *)obj];
        if ([obj isKindOfClass:[NSNumber class]])
            [ans stringByAppendingString:(NSString *)[obj stringValue]];

        NSLog(@"String so far: %@ ", ans);
    }

【问题讨论】:

    标签: nsstring nsmutablearray nsarray nslog


    【解决方案1】:

    我想你是说

    ans = [ans stringByAppendingString:(NSString *)obj];
    

    不只是

    [ans stringByAppendingString:(NSString *)obj];
    

    NSStrings 是不可变的——你不能附加到它们上面。 -stringByAppendingString: 返回一个 new 字符串(然后您可以将其分配给 ans)。

    或者,您可以使用NSMutableString-appendString: 方法。

    【讨论】:

      【解决方案2】:

      嘿,抱歉编码格式不好,再次发布......

      NSString *ans = @"";
      for (id obj in anExpression)
      {
          if ([obj isKindOfClass:[NSString class]])
              [ans stringByAppendingString:(NSString *)obj];
          if ([obj isKindOfClass:[NSNumber class]])
              [ans stringByAppendingString:(NSString *)[obj stringValue]];
      
          NSLog(@"String so far: %@ ", ans);
      }
      [ans autorelease];
      NSLog(@"final string is: %@ ", ans);
      
      return ans;
      

      【讨论】:

      • [ans autorelease]; 不正确——ans 从来不是alloc-ed,从stringByAppendingString: 返回的对象不应被释放。
      • 好的,谢谢。至于我遇到的主要问题 - 无法用数组中的对象填充 NSString - 你有什么想法吗?
      【解决方案3】:

      stringByAppendingString: 方法返回一个 new 字符串,该字符串是通过将给定字符串附加到接收器而生成的。

      所以你想要ans = [ans stringByAppendingString:obj];

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多