【问题标题】:How do I convert an NSMutableString to NSString when using Frameworks?使用框架时如何将 NSMutableString 转换为 NSString?
【发布时间】:2010-05-19 19:46:55
【问题描述】:

我编写了一个 Objective-C 框架,它使用 NSMutableString 构建了一些 HTML 代码,该代码将值作为 NSString 返回。

我已经在接口 .h 文件中声明了一个 NSString 和 NSMutableString:

NSString *_outputLanguage;        // Tests language output
NSMutableString *outputBuilder;
NSString *output;

这是来自框架实现的示例 .m 代码(我无法打印实际代码,因为它是专有的):

-(NSString*)doThis:(NSString*)aString num:(int)aNumber {
if ([outputBuilder length] != 0) {
    [outputBuilder setString:@""];
}
if ([_outputLanguage isEqualToString:@"html"]) {
    [outputBuilder appendString:@"Some Text..."];
    [outputBuilder appendString:aString];
    [outputBuilder appendString:[NSString stringWithFormat:@"%d", aNumber]];
}
else if ([_outputLanguage isEqualToString:@"xml"]) {
    [outputBuilder appendString:@"Etc..."];
}
else {
    [outputBuilder appendString:@""];
}
output = outputBuilder;
return output;
}

当我编写一个文本程序时,NSLog 只是简单地打印出“(null)”。我在那里写的代码是:

TheClass *instance = [[TheClass alloc] init];
NSString *testString = [instance doThis:@"This String" num:20];
NSLog(@"%@", testString);
[instance release];

我希望这是足够的信息!

【问题讨论】:

    标签: objective-c frameworks nsstring nsmutablestring


    【解决方案1】:

    我猜你忘了alloc/init你的字符串...

    【讨论】:

    • 举个例子:你有没有在你的 .m 文件中得到这样的一行:outputBuilder = [[NSMutableString alloc] init]; 如果没有,你需要它。
    • 谢谢!我忘了分配/初始化 - 我添加了一个自定义初始化方法来处理这个问题。
    【解决方案2】:

    确保outputBuilder 有效。你在哪里alloc/init'ing 呢?

    【讨论】:

    • 谢谢!我忘了实际分配/初始化!我创建了一个新的 init 方法来处理这个问题。
    【解决方案3】:

    您的doThis: 方法似乎没有初始化outputBuilder。所以如果它是一个空指针,那么什么都不会做。

    【讨论】:

    • 呃...doThis:是一个实例方法,它在instance上被调用,所以看起来instance确实被初始化了...我真的不明白什么你在说。
    • 也许他的意思是outputBuilder
    • 谢谢!我添加了一个新的 init 方法来处理分配和初始化。
    猜你喜欢
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    相关资源
    最近更新 更多