将字符串解析为NSMutableArray

时间:2010-09-30 15:42:41

标签: iphone arrays

我正在尝试将字符串解压缩为数组,这是我的代码:

编辑:我发现了更多信息。

startTimeArray = [[NSMutableArray alloc] init];  
NSString *tmpStartTimeString = [[tempItems objectAtIndex:0] valueForKey:@"temp_start_time"];
startTimeArray = (NSMutableArray *)[tmpStartTimeString componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"|"]];

[test3 setText:[NSString stringWithFormat:@"%i", [startTimeArray count]]];      

'EXC_BAD_ACCESS'是骗人的,这不是问题所在。上面的代码将以下详细信息输出到控制台:

UILable Test3包含一个2,数组的输出如下: 开始时间:2010-09-30 16:19:39 开始时间:2010-09-30 16:19:43

此时我的数组有值,所以我尝试执行以下操作:

startDateTime = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *strStartDateTime = [formatter stringFromDate:startDateTime];
[formatter release];

[startTimeArray addObject:strStartDateTime];

,这会导致以下错误:

- [__ NSCFType addObject:]:无法识别的选择器发送到实例0x193370

我可以从Debugger看到strStartDateTime有一个有效值。

有什么想法吗?

此致 斯蒂芬

1 个答案:

答案 0 :(得分:1)

看起来你没有保留返回的数组。试试这个:

NSString *tmpStartTimeString = [[tempItems objectAtIndex:0] valueForKey:@"temp_start_time"];
startTimeArray = [[tmpStartTimeString componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"|"]] retain];

[test3 setText:[NSString stringWithFormat:@"%i", [startTimeArray count]]];

PS如果你肯定需要它是一个可变阵列,试试这个:

NSString *tmpStartTimeString = [[tempItems objectAtIndex:0] valueForKey:@"temp_start_time"];
NSArray *tempArray = [tmpStartTimeString componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"|"]];
startTimeArray = [[NSMutableArray arrayWithArray:tempArray] retain];

[test3 setText:[NSString stringWithFormat:@"%i", [startTimeArray count]]];