2012-07-09 80 views
1

我在努力尋找下面顯示的代碼的簡寫版本。基本上我將事件保存到核心數據中。每個事件最多有15個聯繫人。 newEvent來自一個Event類。設置多個對象

下面的代碼很好用,但我不想讓它爲每個聯繫人重複15次。有更容易的方法嗎?

if ([[selectedContacts objectAtIndex:14] objectAtIndex:0] != (id)[NSNull null]) { 
    newEvent.contact15 = [[selectedContacts objectAtIndex:14] objectAtIndex:0]; 
} 
else { 
    newEvent.contact15 = @""; 
} 
+2

簡短的回答:申報'contactX'領域是通過它在單個陣列和循環。 – 2012-07-09 11:34:37

回答

4

您可以使用此代碼

-(void) Solve{ 
    for (int i = 0 ; i < 15 ; i++){ 
     Contact *con = [newEvent.contacts objectAtIndex:14 - i]; 
     if ([[selectedContacts objectAtIndex:14 - i] objectAtIndex:0] != (id)[NSNull null]) { 
      con = [[selectedContacts objectAtIndex:14 - i] objectAtIndex:0]; 
     } 
     else { 
      con = @""; 
     } 
    } 
} 

只是你應該在你的newEvent類中定義contactArray

+0

我不確定如何將數組保存在覈心數據中。但這個答案看起來不錯,歡呼的幫助雖然:) – Patrick 2012-07-09 11:59:46

0

你可以使用NSSelectorFromString[NSString stringWithFormat:@"setContact%d", 15]轉化爲SEL值,然後用performSelector。但ARC不會那樣。

你可以用#define一個C語言的宏,然後調用它15次,並立即#undef它。它會短得多,雖然不夠漂亮。

但最好的是重新設計類有單個contacts陣列。