1

以下に示すコードの簡略版を見つけるのに苦労しています。基本的に、イベントをコアデータに保存しています。各イベントには最大 15 の連絡先があります。newEvent は Event クラスからのものです。

以下のコードはうまく機能しますが、連絡先ごとに 15 回複製したくありません。もっと簡単な方法はありますか?

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

2 に答える 2

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 = @"";
        }
    }
}

クラスで次のように定義する必要がありcontactますnewEventArray

于 2012-07-09T11:45:12.580 に答える
0

を使用して値NSSelectorFromStringに変換[NSString stringWithFormat:@"setContact%d", 15]してから、 を使用できます。しかし、ARCはそれを好まないでしょう。SELperformSelector

#defineこのステートメントを使用して C マクロを作成し、それを 15 回呼び出してすぐに呼び出すことができ#undefます。きれいではありませんが、はるかに短くなります。

contactsしかし、最善の方法は、単一の配列を持つようにクラスを再設計することです。

于 2012-07-09T11:38:15.967 に答える