2012-07-26 81 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