2011-07-19 110 views
0

我用下面的方法:Xcode的警告 - ADDOBJECT

-(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 =评论,我碰到下面的错误和应用程序崩溃:

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等于滑块和TextInput ...

接听和问题类

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

您的自定义类型Answer没有出现有一种方法setAnswer

确保

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

返回Answer类型(它似乎是NSURLCache类型的)的一个对象,然后检查的Answeranswer的属性有setter方法。

编辑:为了解决这个问题,没有发布你的整个源代码,从一开始就开始工作。通过这个,我的意思是回答如下,按顺序:

  1. 什么类型是[questionArray objectAtIndex:currQNum-1]
  2. 什么类型是[[questionArray objectAtIndex:currQNum-1] question]
  3. 什么类型是[[[questionArray objectAtIndex:currQNum-1] question] answer]
+0

嗨,谢谢你的回复。我正在尝试访问答案对象。每个问题对象都有一个答案对象。我会用更多代码更新我的帖子 – ucabdro

+0

@ucabdro:查看我上面的修改。请按顺序让我知道三种类型。 – PengOne

+0

为了帮助调试,使用'NSStringFromClass()'函数:http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference。html#// apple_ref/doc/uid/20000055-BCIIABFJ –

0

也许AnswerNSURLCache的子类。在您的自定义子类头文件和实现文件中,确保已经定义并写入了一个名为-setAnswer:的选择器。要么是这样,要么确保在questionArray中存储Answer实例,而不是NSURLCache实例。

编辑

以下:

@implementation Answer 

@synthesize answer, questionId, entryId; 

@end 

应充实。这是你在Answer.m

+0

我以为使用@synthesize自动创建get/set方法? – ucabdro

+0

@ucabdro:不,但是@ @ synthesize'。 – PengOne

+0

我用@synthesize所以不应该setAnswer有效?另请参见上面的类,答案子类NSObject – ucabdro