2012-07-26 45 views
0

system1我想验证这个语法(当按下一个无线组时)。这句法正确:验证if语句的语法

if([[sender selectedCell ] tag]==1) 
     [prefs addChild:element(@"System", [NSString stringWithUTF8String:"system1"])]; 
    if([[sender selectedCell] tag]==2) 
     [prefs addChild:element(@"system", [NSString stringWithUTF8String:"system2"])]; 
    if([[sender selectedCell] tag]==3) {   
     [advancedButton setEnabled:NO]; 

     [notifs addChild:element(@"UploadedFiles", [NSString stringWithUTF8String:"YES"])]; 
     [notifs addChild:element(@"DeletedFiles", [NSString stringWithUTF8String:"YES"])]; 

    } 

回答

3

是的,这是正确的。 tag财产只是一个NSInteger这样你就可以把它比作1


怪异注:如果您尝试编译 确切代码它会产生一个错误,因为注释(//)适用于在该行后面的任何内容和包括你的右大括号( 编辑:OP编辑的问题,所以我的怪异说明不适用于任何更多)

+0

当选择了正确的标记,我想将数据保存到如果在XML文件中,但我不工作,我会添加一些代码 – Wael 2012-07-26 09:17:51

+0

@Wael好吧,但这是它自己的另一个问题。请考虑发布一个新问题以避免混淆。 – Alladinian 2012-07-26 09:23:03

+0

谢谢,这是新的链接:http://stackoverflow.com/questions/11666343/right-if-statement-syntax-but-it-does-not-work – Wael 2012-07-26 09:30:25

1
if([[sender selectedCell] tag]==1) {/* do something */} 

:)

尽管它应该是罚款。

魔鬼在这里的细节。发件人只是一个id对象,因此不会超过NSObject *。您不能仅仅在没有类型转换或接收到编译器警告的情况下访问该方法。使用ARC时甚至可能无法编译。

对于一个完整的画面:

(IBAction) performMyAction:(id) sender { 

    if ([sender isKindOfClass:[MyVeryOwnClass class]]) { 

    MyVeryOwnClass myVeryOwnObject = (MyVeryOwnClass *) sender; 

    if([[myVeryOwnObject selectedCell] tag]==1) { 
     /* here goes the business logic */ 

    } 
    } 
} 

有archieving相同的其他方式。您可以只将类型分配给临时对象引用。或者你可以使用performToSelector:和performSelector来访问selectedCell。出于某种原因,我更喜欢这种方式。我觉得这个很好读,调试很简单。

+0

当选择正确的标记,我想保存将数据转换为如果在xml文件中,但我不工作,我会添加一些代码 – Wael 2012-07-26 09:19:38