2013-10-14 143 views
-2

我有这样的:的NSMutableArray NSDictionary的从

NSMutableArray *tableData; 
NSMutableArray *thumbnails; 
NSMutableArray *prepTime; 


NSString *path = [[NSBundle mainBundle] pathForResource:@"recipes" ofType:@"plist"]; 
NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path]; 
tableData = (NSMutableArray *)[dict objectForKey:@"RecipeName"]; 
thumbnails = (NSMutableArray *)[dict objectForKey:@"Thumbnail"]; 
prepTime = (NSMutableArray *)[dict objectForKey:@"PrepTime"]; 

,我想这样做:

- (void)tableView:(UITableView *)tableView commitEditingStyle:  
(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [tableData removeObjectAtIndex:indexPath.row]; 
    [thumbnails removeObjectAtIndex:indexPath.row]; 
    [tableData removeObjectAtIndex:indexPath.row]; 
    [tableView reloadData]; 
} 

但它失败:

2013年10月14日16:58:22.202 SimpleTable [8421:11303] *由于未捕获异常'NSInternalInconsistencyException',原因:' - [__ NSCFArray removeObjectAtIndex:]:发送给不可变对象的变异方法'终止应用程序' *第一掷调用堆栈: (0x1c93012 0x10d0e7e 0x1c92deb 0x1d13c4f 0x29bd 0xd0d34 0x20e97b 0x10e4705 0x182c0 0x18258 0xd9021 0xd957f 0xd9056 0x2a9f4d 0x10e4705 0x182c0 0x18258 0xd9021 0xd957f 0xd86e8 0x47cef 0x47f02 0x25d4a 0x17698 0x1beedf9 0x1beead0 0x1c08bf5 0x1c08962 0x1c39bb6 0x1c38f44 0x1c38e1b 0x1bed7e3 0x1bed668 0x14ffc 0x1ced 0x1c15) 的libC++ ABI .dylib:终止调用抛出异常

如何正确地将字典变成mutableArray?

+0

试试这个 tableData =(NSMutableArray *)[[dict objectForKey:@“RecipeName”] mutableCopy] –

+0

每个'objectForKey'返回什么? – Popeye

回答

4

[[dict objectForKey:@“RecipeName”] mutableCopy]应该诀窍!

编辑:您可能要投它像这样[(NSArray的*)[字典objectForKey:@ “RecipeName中”] mutableCopy]

+0

你是对的,只需要等6分钟就可以应用正确的答案。谢谢 – Cheese

2

在你的代码是从资料表

[tableData removeObjectAtIndex:indexPath.row]; 
两次去除对象

我应该有继,

- (void)tableView:(UITableView *)tableView commitEditingStyle: 
(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [tableData removeObjectAtIndex:indexPath.row]; 
    [thumbnails removeObjectAtIndex:indexPath.row]; 
    [prepTime removeObjectAtIndex:indexPath.row]; 
    [tableView reloadData]; 
} 
+1

虽然这是正确的,错误说“突变方法发送到不可变对象”,这意味着他有一个NSarray,并调用方法属于一个NSMutableArray –

+0

谢谢,只是拼错我的第三个数组 – Cheese

2

由于克里斯Gellci,这确实的伎俩:

tableData = [[dict objectForKey:@"RecipeName"] mutableCopy]; 
thumbnails = [[dict objectForKey:@"Thumbnail"] mutableCopy]; 
prepTime = [[dict objectForKey:@"PrepTime"] mutableCopy]; 
相关问题