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在你的newEvent类中定义为Array

于 2012-07-09T11:45:12.580 回答
0

您可以使用NSSelectorFromStringto 转换[NSString stringWithFormat:@"setContact%d", 15]SELvalue,然后使用performSelector. 但ARC不会喜欢这样。

您可以#define使用此语句创建一个 C 宏,然后调用它 15 次并立即调用#undef它。它会短得多,虽然不漂亮。

但最好的办法是将类重新设计为具有单个contacts数组。

于 2012-07-09T11:38:15.967 回答