Предупреждение XCode - addObject - PullRequest
0 голосов
/ 20 июля 2011

Я использую следующий метод:

-(void) finishQuestionnaire:(id)sender{ 
    NSString * ans;
    NSString* qt = [[[questionArray objectAtIndex:currQNum-1] question] qType];     
    if([qt isEqualToString:@"Slider"]){
        ans = [[[questionArray objectAtIndex:currQNum-1] sliderLabel]text];
    }else if([qt isEqualToString:@"Option"]){               

    }else if([qt isEqualToString:@"TextInput"]){
        ans = [[[questionArray objectAtIndex:currQNum-1] inputAnswer]text];
    }else if([qt isEqualToString:@"ImagePicker"]){

    }else if([qt isEqualToString:@"Comment"]){
        ans = [[[questionArray objectAtIndex:currQNum-1] inputAnswer]text];             
    }
    //UPDATED

NSLog(@"%@", [questionArray objectAtIndex:currQNum-1]);
NSLog(@"%@", [[questionArray objectAtIndex:currQNum-1] question]);
NSLog(@"%@", [[[questionArray objectAtIndex:currQNum-1] question] answer]);

    //[self.navigationController popToRootViewControllerAnimated:YES];
}

когда qt = comment, я получаю следующую ошибку и приложение вылетает:

 2011-07-20 00:02:04.723 MainMenu[71393:207] -[NSURLCache setAnswer:]: unrecognized selector sent to instance 0x4e29280
    2011-07-20 00:02:04.726 MainMenu[71393:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSURLCache setAnswer:]: unrecognized selector sent to instance 0x4e29280'

Я не уверен, что я делаю неправильно .... Он работает, когда qt равен ползунку и вводу текста ...

Класс ответа и вопроса

import <Foundation/Foundation.h>


@interface Answer : NSObject {
    //NSString* answerId;
    NSString* answer;
    NSString* questionId;
    NSString* entryId;
}

//@property (nonatomic, retain) NSString* answerId;
@property (nonatomic, retain) NSString* answer;
@property (nonatomic, retain) NSString* questionId;
@property (nonatomic, retain) NSString* entryId;

@end


#import "Answer.h"


@implementation Answer

@synthesize answer, questionId, entryId;

@end

#import <Foundation/Foundation.h>
#import "Answer.h"

@interface Question : NSObject {
    NSString* qId;
    NSString* qTitle;
    NSString* qNumber;  
    NSString* sectionId;
    NSString* qType;
    Answer* answer;
}

@property (nonatomic, retain) NSString* qId;
@property (nonatomic, retain) NSString* qTitle;
@property (nonatomic, retain) NSString* qNumber;
@property (nonatomic, retain) NSString* sectionId;
@property (nonatomic, retain) NSString* qType;
@property (nonatomic, retain) Answer* answer;

@end


@implementation Question
@synthesize qId, qTitle, qNumber, sectionId, qType, answer;

-(id)init
{
    if (self = [super init])
    {
        // Initialization code here
        answer = [[Answer alloc]init];
    }
    return self;
}

-(void) dealloc{
    [answer release];
    [super dealloc];
}

Редактировать: см. Код обновления, вот вывод:

2011-07-20 01:21:04.402 MainMenu[71910:207] <CommentQuestionViewController: 0x4e0b100>
2011-07-20 01:21:04.404 MainMenu[71910:207] <Question: 0x4e55170>
2011-07-20 01:21:04.404 MainMenu[71910:207] (null)

Обновление:

Теперь я даже не обнуляюсь. Мой вывод просто:

2011-07-20 01:21:04.402 MainMenu[71910:207] <CommentQuestionViewController: 0x4e0b100>
2011-07-20 01:21:04.404 MainMenu[71910:207] <Question: 0x4e55170>

Ответы [ 2 ]

2 голосов
/ 20 июля 2011

Ваш пользовательский тип Answer не имеет метода setAnswer.

Убедитесь, что

[[[questionArray objectAtIndex:currQNum-1] question] answer];

возвращает объект типа Answer (быть типа NSURLCache), а затем проверить, что свойство answer Answer имеет метод установки.

РЕДАКТИРОВАТЬ: Чтобы решить эту проблему без публикации всего исходного кода, начните с начала ипроложите себе путь вниз.Под этим я подразумеваю ответ по порядку:

  1. К какому типу относится [questionArray objectAtIndex:currQNum-1]?
  2. К какому типу относится [[questionArray objectAtIndex:currQNum-1] question]?
  3. какой тип [[[questionArray objectAtIndex:currQNum-1] question] answer]?
0 голосов
/ 20 июля 2011

Возможно Answer является подклассом NSURLCache.В ваших пользовательских заголовочных файлах подкласса и файлах реализации убедитесь, что вы определили и записали селектор с именем -setAnswer:.Либо это, либо убедитесь, что вы храните экземпляр Answer в questionArray, а не экземпляр NSURLCache.

РЕДАКТИРОВАТЬ

Следующее:

@implementation Answer

@synthesize answer, questionId, entryId;

@end

должен быть конкретизирован.Это все, что у тебя есть в Answer.m?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...