gpt4 book ai didi

ios - [MyClassName copyWithZone :]: unrecognized selector sent to instance?

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:10:16 29 4
gpt4 key购买 nike

我刚刚实现了我的类(class)

@interface ExampleNestedTablesViewController ()
{
NSMutableArray *projectModelArray;
NSMutableDictionary *sectionContentDictionary;

}

- (void)viewDidLoad
{
[super viewDidLoad];

ProjectModel *project1 = [[ProjectModel alloc] init];
project1.projectName = @"Project 1";

ProjectModel *project2 = [[ProjectModel alloc] init];
project2.projectName = @"Project 2";
if (!projectModelArray)
{
projectModelArray = [NSMutableArray arrayWithObjects:project1, project2, nil];
}

if (!sectionContentDictionary)
{
sectionContentDictionary = [[NSMutableDictionary alloc] init];

NSMutableArray *array1 = [NSMutableArray arrayWithObjects:@"Task 1", @"Task 2", nil];
[sectionContentDictionary setValue:array1 forKey:[projectModelArray objectAtIndex:0]]; // **this line crashed**.

}
}

这是我的项目模型

@interface ProjectModel : NSObject

typedef enum
{
ProjectWorking = 0,
ProjectDelayed,
ProjectSuspended,

} ProjectStatus;

@property (nonatomic, assign) NSInteger idProject;
@property (nonatomic, strong) NSString* projectName;
@property (nonatomic, strong) NSMutableArray* listStaff;
@property (nonatomic, strong) NSTimer* projectTimer;
@property (nonatomic, assign) ProjectStatus projectStatus;
@property (nonatomic, strong) NSMutableArray* listTask;
@property (nonatomic, assign) NSInteger limitPurchase;
@property (nonatomic, strong) NSDate* limitTime;
@end

输出是:SDNestedTablesExample[1027:c07] -[ProjectModel copyWithZone:]: 无法识别的选择器发送到实例 0x7562920。我不知道哪个问题。你能帮帮我吗?

最佳答案

查看 NSMutableDictionary setObject:forKey: 的文档(注意你应该使用 setObject:forKey: ,而不是 setValue:forKey: )。注意键的预期类型。它必须是 id<NSCopying> 类型.这意味着 key 必须符合 NSCopying协议(protocol)。

由于您的 key 类型为 ProjectModel , 错误是自你的 ProjectModel 开始提示的类未实现 NSCopying 所需的方法协议(protocol) - copyWithZone: .

您确定要使用 ProjectModel 吗?对象作为关键?这样做还意味着您需要一个健全的 isEqual: 实现。和 hash方法,除了copyWithZone .

解决方案是更新您的 ProjectModel类,因此它符合 NSCopying协议(protocol)并实现 copyWithZone:方法。并正确实现 isEqual:hash方法。或者将 key 更改为 idProject属性(正确包装为 NSNumber )。

关于ios - [MyClassName copyWithZone :]: unrecognized selector sent to instance?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16452617/

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