2011-06-11 112 views
1

我访问NSMutableArray(nid)的特定元素并将其保存在NSString(num)中。将NSString附加到NSMutableString,引发异常

之后,我想连接这个元素(num)与url(NSMutableString),并使用appendString方法,但我得到一个异常。

我该如何解决这个问题?

下面的代码:

NSMutableArray nid; 
.... 

NSUInteger row = [indexPath row]; 
NSString *num = [nid objectAtIndex:row]; 

NSMutableString *url = [[NSMutableString alloc] 
         initWithString:@"http://example.com/prova/"]; 

[url appendString:num]; 
+1

什么姓名o你得到的例外吗? – Jhaliya 2011-06-11 17:36:42

+0

- [NSCFNumber长度]:无法识别的选择发送到实例0x4b54de0 ***由于未捕获的异常'NSInvalidArgumentException',原因:' - [NSCFNumber长度]:无法识别的选择发送到实例0x4b54de0' – davideagostini 2011-06-11 17:38:42

+0

如何填充nid?你肯定'objectAtIndex:'返回一个字符串吗? – albertamg 2011-06-11 17:39:02

回答

4

- [NSCFNumber长度]:无法识别的选择发送到实例0x4b54de0 *终止应用程序由于未捕获的异常 'NSInvalidArgumentException' 的,原因: ' - [NSCFNumber长度]:无法识别 选择器发送到实例0x4b54de0'

根据例外情况,它看起来像objectAtIndex:正在返回NSNumber而不是NSString。如果nid包含数字,你需要将它们转换为字符串,然后才能将它们传递到appendString

NSUInteger row = [indexPath row]; 
NSNumber *num = [nid objectAtIndex:row]; 
NSString *numStr = [num stringValue]; 

NSMutableString *url = [[NSMutableString alloc] 
         initWithString:@"http://example.com/prova/"]; 

[url appendString:numStr]; 

... 

[url release]; 
+0

好的感谢信息。 – davideagostini 2011-06-11 18:01:09

+0

欢迎您:) – albertamg 2011-06-11 18:28:24

1

NIDarray这回不是一个NSString,所以是由下面的返回一个NSNumber的数声明

NSString *num = [nid objectAtIndex:row]; // Wrong statement 

NSNumber* num = [nid objectAtIndex:row]; // Correct statement 

所以,你的代码应该是..

NSMutableArray nid; 
.... 

NSUInteger row = [indexPath row]; 

//your array contain NSNumber type of pointer NOT NSString. 
NSNumber *num = [nid objectAtIndex:row]; 

//Get a NSString object from a NSNumber. 
NSString *myString = [num stringValue]; 

NSMutableString *url = [[NSMutableString alloc] 
         initWithString:@"http://example.com/prova/"]; 

[url appendString:myString]; 
+0

完美,现在它的作品。 非常感谢 – davideagostini 2011-06-11 17:54:09

+1

我可能只是'NSURL * url = [NSURL URLWithString:[NSString stringWithFormat:@“http://example.com/prova/%@”,[nid objectAtIndex:row]]];' .... – bbum 2011-06-11 17:55:06

+0

@ reb2awrl:很高兴帮助你.. – Jhaliya 2011-06-11 17:55:08