0

我得到了一个包含来自不同类型的视图控制器的数组,viewControllersArray因此首先我检查类型是否正确(QuestionViewController),然后我想打印出该属性。

for(NSUInteger i = 0; i<viewControllersArray.count; i++) { 
if ([[viewControllersArray objectAtIndex:i] isKindOfClass:[QuestionViewController class]])    {
    NSLog(@"%@",((QuestionViewController*)[viewControllersArray objectAtIndex:i]).getQAnswer ); 
    }
}

然而,这只是向我显示 (null) 而不是 NSString 属性。

编辑

到目前为止,我得到的是:

for(NSUInteger i = 0; i<viewControllersArray.count; i++) { 
    if ([[viewControllersArray objectAtIndex:i] isKindOfClass:[QuestionViewController class]]){
        NSLog(@"IDENT: %@", [[viewControllersArray objectAtIndex:i] ident]);
        NSLog(@"ANSWER: %@", [[viewControllersArray objectAtIndex:i] getQAnswer]);
    }
}

第二个 NSLog (getQAnswer) 有效。getQAnswer 是 QuestionViewController 中的一个方法。第一个 NSLog (ident) 显示不正确的输出 (null),这是属性:

@property (strong, nonatomic) NSString *ident;
4

2 回答 2

1

你输入到QuestionViewController

采用

NSLog(@"%@", [[viewControllersArray objectAtIndex:i] getQAnswer]); 

编辑

根据你的评论viewControllersArray[0]给你SendViewController

你应该改变

isKindOfClass:

if( [[viewControllersArray objectAtIndex:i] class] == [QuestionViewController class])   
于 2013-04-05T09:00:13.407 回答
1

如果你得到一个空值,那只能意味着 qAnswer 的值没有设置。如果对象不是 QuestionViewController 类型,则不会进入 if 条件。

您确定设置了 qAnswer 的值吗?如果您使用的是getter/setter,您不应该使用[viewcontroller getQAnswer]or viewcontroller.qAnswer(除非您有一个名为getQAnswer 的变量)?

数组中是否还有任何视图控制器是 QuestionViewController 的子类的对象?如果有,那么该视图控制器也将满足条件并进入 if 条件。

如果是这种情况,请尝试使用isMemberOfClass:. 看这里

于 2013-04-05T09:14:36.560 回答