多个数组来填充tableView

时间:2016-01-19 19:04:50

标签: ios nsarray tableview

我使用tableView显示朋友列表。每种类型都存储在一个数组中 当显示viewController时,我将单独从我的网络服务请求每个数组。(OUTINFRIENDS
我回来的数据是一个对象数组,每个对象有三个属性:pictureID,profileID和name。
每个数组都显示在一个部分中,但这些部分的顺序很重要 我希望传出的朋友请求在第一部分,在第二部分传入,在第三部分传递朋友,前提是这些数组中有元素,如果没有,所有其他将在顺序中移动一个位置。我希望你明白......

我现在这样做的方式真的很尴尬。 对于我从我的服务器获取的每个数组(friendsArray,incomingArray,outgoingArray):

for (NSDictionary*dict in data){
            User *friend = [User new];
            friend.profileID = [dict objectForKey:@"profileID"];
            friend.pictureID = [dict objectForKey:@"pictureID"];
            friend.name = [dict objectForKey:@"name"];
            [friendsArray addObject:friend];
        }

我认为这部分是完全正常的 但现在numberOfSectionsInTableView

if (outgoingArray.count > 0 && incomingArray.count == 0 && friendsArray.count == 0) {
    return 1;
}
if (outgoingArray.count == 0 && incomingArray.count > 0 && friendsArray.count == 0) {
    return 1;
}
if (outgoingArray.count == 0 && incomingArray.count == 0 && friendsArray.count > 0) {
    return 1;
}
if (outgoingArray.count > 0 && incomingArray.count > 0 && friendsArray.count == 0) {
    return 2;
}
if (outgoingArray.count > 0 && incomingArray.count == 0 && friendsArray.count > 0) {
    return 2;
}
if (outgoingArray.count == 0 && incomingArray.count > 0 && friendsArray.count > 0) {
    return 2;
}
if (outgoingArray.count > 0 && incomingArray.count > 0 && friendsArray.count > 0) {
    return 3;
}
//default
return 0;

请......必须有办法更容易地做到这一点? 同样适用于numberOfRowsInSection

switch (section) {
    case 0:
        if (outgoingArray.count > 0){
            return outgoingArray.count;
        }else if (incomingArray.count > 0){
            return incomingArray.count;
        }else if (friendsArray.count > 0){
            return friendsArray.count;
        }else{
            return 0;
        }
        break;
    case 1:
        if (outgoingArray.count > 0 && incomingArray.count > 0){
            return incomingArray.count;
        }
        if (outgoingArray.count == 0 && incomingArray.count > 0) {
            return friendsArray.count;
        }
    case 2:
        return friendsArray.count;
    default:
        return 0;
        break;
}

当用户选择一个小区时,我仍然遇到问题。我需要知道所选配置文件的用户ID,因为我将其传输到下一个viewController。现在我以相同的方式实现这一点,即获得行数。

1 个答案:

答案 0 :(得分:0)

你能创建一个包含所有对象的字典吗?您可以使用数组子项执行三个父键,因此您只需检查字典是否包含父键,然后检查子项的行数。