0

我有一个对象

@interface QuestionViewModel : NSObject

@property (nonatomic, assign) NSInteger questionId;
@property (nonatomic, strong) NSString *questionText;
@property (nonatomic, assign) NSInteger questionNumber;
@property (nonatomic, strong) NSArray *choices;

@property (nonatomic, strong) QuestionViewModel *nextQuestion;
@property (nonatomic, strong) QuestionViewModel *previousQuestion;

@end

我知道当我填充此对象时它是成功的,并且所有属性都已完全正确地初始化。

但是,当我像这样传递这个对象时:

*这是一个不同的类(它不在上面定义的 NSObject 中)。

@property (nonatomic, strong) QuestionViewModel *currentQuestion;

- (void)nextQuestion
{
    [self loadQuestion:self.currentQuestion.nextQuestion];
}

- (void)loadQuestion:(QuestionViewModel *)question
{
    self.currentQuestion = question;
    .
    .
    .
}

question.nextQuestion并且question.previousQuestionnil

为什么当我传递这个对象时,后续对象(下一个问题和上一个问题)会变成 nil?似乎该对象正在执行浅拷贝而不是深拷贝,但不确定。

似乎有一些我不知道的基础知识。

4

2 回答 2

0

我认为你需要先初始化你的子类QuestionViewModelNSObject 。在QuestionViewModel.m文件中,您可以覆盖 init 方法。像这样的东西:

- (id)init {
    if((self = [super init])) {
        // Set whatever init parameters you need here
    }
    return self;
}

然后,在您尝试使用此方法的类中,只需调用:

-(void)viewDidLoad {
    QuestionViewModel *currentQuestion = [[QuestionViewModel  alloc] init];
}
于 2017-01-26T23:11:55.660 回答
0

我最终更改了模型以更紧密地反映链接列表。当我存储上一个和下一个对象时,它很接近,但我最终更改了上一个和下一个属性来存储对象的索引,而不是实际的对象。

@property (nonatomic, assign) NSInteger nextQuestionIndex;
@property (nonatomic, assign) NSInteger previousQuestionIndex;
于 2017-01-30T16:35:54.983 回答