从 NSMutableArray 构建 NSstring

发布于 2024-10-05 23:51:51 字数 554 浏览 0 评论 0原文

我花了几个小时试图弄清楚这个问题,眼睛很痛——而且我在网上寻找答案已经有一段时间了(说出多少会很尴尬……)。 我想做的就是在 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);
    }

My eyes hurt from hours of trying to figure this one - and i have looked for an answer for quite a while on-line (it will be embarrassing to tell how much...).
all i am trying to do is to enumerate using a for-in loop on anExpression which is a NSMutableArray that holds NSNumbers and NSStrings.
my NSLog print for the variable ans returns an empty string.
What am i doing wrong?

  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);
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

猥琐帝 2024-10-12 23:51:51

我认为你的意思

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

不仅仅是

[ans stringByAppendingString:(NSString *)obj];

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

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

I think you mean

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

not just

[ans stringByAppendingString:(NSString *)obj];

NSStrings are immutable -- you can't append to them. -stringByAppendingString: returns a new string (which you could then assign to ans).

Alternatively, you might use an NSMutableString and the -appendString: method.

尾戒 2024-10-12 23:51:51

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

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;

Hey, sorry for the bad coding format, posting it again ...

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;
弃爱 2024-10-12 23:51:51

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

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

the method stringByAppendingString: returns a new string made by appending the given string to the receiver.

so you want ans = [ans stringByAppendingString:obj];

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文