- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我刚刚实现了我的类(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/
这个问题在这里已经有了答案: Create object from class name in JavasScript ECMAScript 6 (8 个答案) 关闭 6 年前。 我使用 babel
我想知道为 C# 转换对象的更好方法是什么: MyClassName test = (MyClassName)object; MyClassName test = object as MyClassN
所以一切都在这个程序中编译,但我真的当我增加值时,它返回__lldb_expr_640.IncrementWatcher(我在 Playground 上执行这个) 。一切都会编译,所以这不是问题。代码
如果我运行java -classpath ./sqljdbc4.jar myclassname错误是 Exception in thread "main" java.lang.NoClassDefFo
在使用 IntelliJ 处理 Grails 应用程序时,我突然开始面临一个奇怪的问题。我在 src/groovy 下有不同的域类和其他一些类。 .当我打开一个类文件进行一些更改时,我收到一个错误,该
Twitter 发布了一个 Java 客户端库,并包含以下使用它的示例代码: // Connect to the filter endpoint, tracking the term "twitter
我有一个有 7 个 child 的 UIViewCustom 类。每个 child 都有自己的类(class)功能来帮助发起 +(int) minHeight; +(int) minWidth; 在
我刚刚实现了我的类(class) @interface ExampleNestedTablesViewController () { NSMutableArray *projectModelA
我正在用 Java 编写 Web 应用程序并使用 SLF4J 进行日志记录。 我已经厌倦了为每个使用日志记录的类编写以下行: private static final Logger logger =
我的应用程序崩溃了,原因是: -[MyClassName copyWithZone:] unrecognized selector sent to instance 我有两个类。假设 Class1 和
我想在 objective-c 类中声明静态类变量,并想直接使用类名来使用它们 例如 有一个名为“Myclassname”的类和变量“Var” 并想像这样访问这个变量.... Myclassname.
我有以下邪恶表格(列表)。表单的要点是输入评论消息并在提交时将其保存到数据库。 List> modalHTML = new ArrayList<>(); List modalIDlist = new
在我的 Objective-C 类的 header 中,我使用 @class MyClassName 以便能够在定义的类中使用 MyClassName 对象。 在 Objective-C 中,@cla
我正在处理一个 Kotlin 多平台项目,遇到了保存数据库实体对象的问题。当我调用我的 sqldelight dao 类的插入方法时抛出异常 kotlinx.serialization.Seriali
这个问题在这里已经有了答案: What do querySelectorAll and getElementsBy* methods return? (12 个答案) 关闭 3 年前。
我是一名优秀的程序员,十分优秀!