gpt4 book ai didi

objective-c - 将 NSDictionary 中的每个 NSArray 更改为 Mutable

转载 作者:行者123 更新时间:2023-12-01 19:18:06 24 4
gpt4 key购买 nike

我对以下代码有疑问,我需要对 NSMutableDictionary 中的每个数组进行一些修改。当我第一次将这些数组添加到字典中时,它们是“MutableArray”,但是当我尝试对它们做一些事情时,它们变成了“NSArray”。

这是我的代码:

UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
NSString *cellText = selectedCell.textLabel.text;
NSLog(@"cell: %@", cellText);

Boolean flag = false;
NSMutableDictionary *myTempDict = [[NSMutableDictionary alloc] initWithDictionary:self.tableContents copyItems:YES];

for (NSString *key in myTempDict)
{
NSLog(@"1st for");
for(NSString *myString in [myTempDict objectForKey:key])
{
NSLog(@"2nd for");
if([myString isEqualToString:cellText])
{
if([[myTempDict objectForKey:key] isKindOfClass:[NSMutableArray class]])
{
NSLog(@"mutable");
}
else if([[myTempDict objectForKey:key] isKindOfClass:[NSArray class]])
{
NSLog(@"not mutable");
}
[[myTempDict objectForKey:key] removeObject:myString];
break;
NSLog(@"break1");
}
NSLog(@"2nd for end");
}
if(flag)
{
break;
NSLog(@"break2");
}
}
self.tableContents = myTempDict;
[tableView reloadData];

现在当我运行它时,它会产生以下错误:
  • 单元格:12-01244476
  • 第一个为
  • 第二为
  • 不可变
  • -[__NSArrayI removeObject:]:无法识别的选择器发送到实例 0x7c02580
  • 当前语言:自动;当前 objective-c

  • 在我的 viewdidLoad 上,我将那些 Array 创建为 NSMutableArray,但现在它又回到了 NSArray,为什么?
    以及如何解决这个问题的任何想法?

    真的需要帮助。

    谢谢

    最佳答案

    根据 NSDictionary 的文档

    copyWithZone: 方法执行浅拷贝。如果你有任意深度的集合,为 flag 参数传递 YES 将执行表面以下第一层的不可变副本 .如果您通过 NO,则第一级的可变性不受影响。在任何一种情况下,所有更深层次的可变性都不受影响。

    你为什么不试试:

    NSMutableDictionary *myTempDict = [self.tableContents mutableCopy];

    关于objective-c - 将 NSDictionary 中的每个 NSArray 更改为 Mutable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11780374/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com