【发布时间】:2014-03-29 04:11:17
【问题描述】:
以下代码在我的实现文件中:
NSMutableArray *courseArray;
- (IBAction)btnClick:(id)sender
{
NSDictionary *courseNames;
if(![_txtBox.text isEqual:@""]) //if not empty
{
courseNames = [self retrieveCourseNamesForSemester:_txtBox.text];
for (NSString *key in courseNames)
{
NSString *val = [NSString stringWithFormat:@"%@-%@",key,[courseNames objectForKey:key]];
_txtView.text = val;
@try
{
[courseArray addObject:val];
}
@catch(NSException *e)
{
NSLog(@"Exception: %@ for value = %@", e, val);
}
}
}
[_coursePicker reloadAllComponents];
_coursePicker.hidden=false;
[_txtBox resignFirstResponder];
}
在您看到对NSLog() 的调用时,我收到以下错误消息:
2014-03-29 00:02:25.830 WebServiceTest[44646:60b] Exception: -[__NSArrayI addObject:]: unrecognized selector sent to instance 0x8d82c30 for value = 73-522-Course Name
编辑:另外,courseArray 填充了viewDidLoad 中的示例数据:
- (void)viewDidLoad
{
[super viewDidLoad];
courseArray = @[@"Australia (AUD)", @"China (CNY)",
@"France (EUR)", @"Great Britain (GBP)", @"Japan (JPY)"];
}
我应该在某个地方定义courseArray 将采用NSString 对象吗?
【问题讨论】:
-
courseArray是一个不可变数组。您的代码在哪里实际为courseArray变量赋值? -
courseArray在代码的第一行被定义为NSMutableArray。它是如何不可变的?courseArray填充有viewDidLoad中的示例数据,现在添加到问题中。 -
@rar 声明无关。您正在为变量分配一个不可变数组。它不会因为你声明变量的方式而神奇地变得可变。
-
我现在明白了。为其分配国家/地区值使其成为不可变数组。
-
仅供参考 - 在查看您遇到的错误时,这里有一个提示。当您看到
__NSArrayI- 这是不可变数组的内部表示(因此是I)。如果错误与实际的可变数组有关,您可能会看到__NSArrayM。
标签: ios objective-c nsmutablearray nsarray