我有一个简单的对象,如下所示:
#import <Foundation/Foundation.h>
#import <Parse/Parse.h>
@class MyUser;
@interface MyCycle : NSObject
@property (nonatomic, copy) NSNumber *myNumber;
@property (nonatomic, strong) MyUser *user;
@property (nonatomic, strong) NSArray *data;
@end
以下是实施:
#import "MyCycle.h"
@implementation MyCycle
@end
这是用户对象:
#import <Foundation/Foundation.h>
#import <Parse/Parse.h>
@interface MyUser : NSObject
@property (nonatomic, copy) NSString *usersName;
@property (nonatomic, copy) NSString *gender;
@property (nonatomic, copy) NSString *email;
@property (nonatomic, copy) NSString *password;
@property (nonatomic, copy) NSString *phoneNumber;
@property (nonatomic, strong) UIImage *profileImage;
@property (nonatomic, strong) PFFile *profileImageFile;
@end
我分配此对象并使用以下内容填充它:
MyCycle *cycle = [[MyCycle alloc] init];
cycle.myNumber = @1;
cycle.data = [[NSArray alloc]init];
我收到以下错误:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MyCycle copyWithZone:]: unrecognized selector sent to instance
为什么会发生这种情况,我该如何解决?
答案 0 :(得分:6)
在代码中的某处,您有一个尝试复制MyCycle
实例的代码。也许你使用一个对象作为字典的关键?如果您希望继续此行为,则需要为您的班级实施NSCopying protocol。
答案 1 :(得分:0)
可能发生此错误的原因之一是您声明的变量的名称或iOS SDK已使用您的自定义类。你可以说这是一个关键词。并且变量名永远不能是关键字,因为它会混淆您的XCode(Objective C Compiler)。
答案 2 :(得分:0)
我知道这已经回答了一段时间但是对于后代来说,这是另外一个可能是原因。检查你的绑定。如果您不小心在Interface Builder中绑定控制器并且UI控件尝试将实际控制器用作导致copyWithZone:
发出的字符串或其他值类型,也会发生这种情况。
例如,如果文件所有者具有嵌套控制器,并且您不小心绑定到innerController
而不是innerController.property
。
答案 3 :(得分:0)
这是一个古老的问题,但可能没有@synthesized属性&#39;数据&#39; myNumber&#39;。换句话说,你没有这些属性的setter。