2 lantianyiming lantianyiming 于 2013.01.17 16:24 提问

在lable中显示string时应用崩溃

在用NSString更新UILabel时应用崩溃了,在console中显示同样的NSString就没问题:

-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    if (self.connectionData)
    {
        NSError *error;
        self.dict = [NSJSONSerialization JSONObjectWithData:self.connectionData options:kNilOptions error:&error];
        self.matchesArray = self.dict[@"matches"];

        NSString *title = [self.matchesArray valueForKey:@"title"];
        NSLog(@"NSString TITLE contains: %@", title);
        self.titleLabel.text = title;
    }
}

CONSOLE OUTPUT:

2013-01-16 13:54:08.550 ZEITreisen[3168:c07] NSString TITLE contains: (
    "Mark und Dollar"
)
2013-01-16 13:54:08.552 ZEITreisen[3168:c07] -[__NSArrayI isEqualToString:]: unrecognized selector sent to instance 0xde93850
(lldb) 

2个回答

g989_1314125
g989_1314125   2013.01.17 16:45

试试:

-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    if (self.connectionData)
    {
        NSError *error;
        self.dict = [NSJSONSerialization JSONObjectWithData:self.connectionData options:kNilOptions error:&error];
        self.matchesArray = self.dict[@"matches"];

        NSString *title = [self.matchesArray valueForKey:@"title"];
        NSLog(@"NSString TITLE contains: %@", title);
        self.titleLabel.text = [NSString stringWithFormat:@"%@",[title objectAtIndex:0]];
    }
}
love_loveec
love_loveec   2013.01.17 16:58

title 不属于NSString, 它其实是NSArray

所以改成这样:

-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    if (self.connectionData)
    {
        NSError *error;
        self.dict = [NSJSONSerialization JSONObjectWithData:self.connectionData options:kNilOptions error:&error];
        self.matchesArray = self.dict[@"matches"];

        NSArray *title = [self.matchesArray valueForKey:@"title"];
        NSLog(@"NSString TITLE contains: %@", title);
        self.titleLabel.text = [title lastObject];
    }
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C++中String类的程序崩溃问题
#include #include using namespace std; class String { private: char *str; public: String(char *p = NULL) { if (p != NULL) { str = new char[strlen(p) + 1]; strcpy(str,p); } else {
ASP.NET 在Label中显示换行
问题描述: 在TextBox中编辑好的一段带换行的文本,直接在Label中显示的时候将不显示换行,整个文本成了一段。 解决方法: 在aspx中将Label控件的Text属性修改为 asp:Label ID="Label10" runat="server"            Text='#((string)Eval("UShouldKnow")).Replace("\r\n",
在C#中, Winform的Picture控件上显示透明的Lable字体
在C#中, Winform的Picture控件上显示透明的Lable字体
取消应用程序崩溃后弹出的对话框
正常情况下,应用程序崩溃后,会弹出对话框,显示崩溃相关信息。有时候,用户并不希望出现这个对话框,所以需要取消。   这里有两篇博文介绍了方法,经过验证有效:如何取消WIN2008下应用报错后弹出的对话框 程序已停止 要求关闭程序和关闭Windows 2008下面应用程序出错后的提示。   除此之外,还可以利用AeDebug进行配置,不弹出对话框,参考的是这篇文章:程序崩溃时利用注册表自动转储内
swift中label内容显示不同的颜色
let str = "fdasfsafaf" let nameStr:NSMutableAttributedString = NSMutableAttributedString(string: str) //绿色         let range = NSMakeRange(0, 5)         nameStr.addAttribute(NS
string中显示特定字符串
string中显示特定字符串 string中显示特定字符串 string中显示特定字符串 string中显示特定字符串
如何在lable控件中多行显示所写文字
很多时候,我们需要一些提示信息,而这些提示信息往往是需要用控件来进行显示的静态文字,本篇主要是讲如何来用lable控件来多行的显示文字。              如大家知道的那样,lable控件本身是不支持多行显示的,那么如何来实现呢,楼主经过测试,发现下面方法是可行的:
函数return时崩溃
一个函数,里面用了std::string, char [],
vs2010下QString::toStdString()崩溃
vs2010下ReleaQString::toStdString()
Lable 多行显示
Lable 多行显示 及 颜色