Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何使用来自两种不同对象类型的两个数组的数据填充UITableView?_Objective C_Ios_Xcode - Fatal编程技术网

Objective c 如何使用来自两种不同对象类型的两个数组的数据填充UITableView?

Objective c 如何使用来自两种不同对象类型的两个数组的数据填充UITableView?,objective-c,ios,xcode,Objective C,Ios,Xcode,目前,我使用以下方法填充UITableView: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"CharNameCell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIde

目前,我使用以下方法填充UITableView:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"CharNameCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    MyObject *obj = (MyObject*)[self.characters objectAtIndex:indexPath.row];
    cell.textLabel.text = obj.name;

    return cell;
}
但是,如果有两个不同类型的两个不同数组,并且希望在单元格中显示每个数组的属性,该怎么办

伪代码:

肌对象1 肌对象2

cellTextLabel.text=Myobject1.name; cellTextLabel.text=MyObject2.name


假设每个对象都有一个name属性。我知道我上面的语法不正确,但我想你应该明白其中的道理。

我建议你将所有对象存储在NSMutableArray中。这将是您的数据模型。然后,您可以遍历数组,在UITableView中显示数据。如果需要,使用内省来找出对象是什么类型的类

id currentObject = [myArray objectAtIndex:indexPath.row];

if ([currentObject isKindOfClass:[MyObject1 class]]){
    //set properties or do stuff with MyObject1
}else if ([currentObject isKindOfClass:[MyObject2 class]]){
    //do stuff with Object2
}

这只是一个建议。有很多方法可以做到这一点,但这一切都取决于你的应用程序和你正在使用的持久性类型等。希望这能有所帮助。

我建议你将所有对象存储在NSMutableArray中。这将是您的数据模型。然后,您可以遍历数组,在UITableView中显示数据。如果需要,使用内省来找出对象是什么类型的类

id currentObject = [myArray objectAtIndex:indexPath.row];

if ([currentObject isKindOfClass:[MyObject1 class]]){
    //set properties or do stuff with MyObject1
}else if ([currentObject isKindOfClass:[MyObject2 class]]){
    //do stuff with Object2
}

这只是一个建议。有很多方法可以做到这一点,但是这将取决于你的应用程序和你使用的是什么样的持久性等等。希望这有帮助。

你应该考虑创建一个协议,比如<代码> MyObjutStudio或其他什么。这个协议会有一些东西,比如
name
,然后数组中的所有类都会实现这个协议。嘿,Jason,这是一个很好的建议。你能把它添加到答案中吗?所以我可以接受它。你应该考虑创建一个协议,比如<代码> MyObjutStudio或其他什么。这个协议会有一些东西,比如
name
,然后数组中的所有类都会实现这个协议。嘿,Jason,这是一个很好的建议。你能把它添加为一个答案,这样我就可以接受它了吗?嗯,我的意思是(虽然可能不太清楚),我希望每个对象都出现在自己的单元格中。那是行不通的(@Darkenor您有多少个对象以及您希望对象的顺序目前有两个,但最终可能会多达20个。我希望对象的name属性显示在UITableView中,然后在选择后,在另一个视图中向下钻取对象的详细信息。@Darkenor我建议您将对象存储在中一个NSMutableArray。这将是您的数据模型。然后您可以在数组中迭代以在UITableView中显示数据。如果需要,使用内省来找出您的对象是什么类型的类。我的意思是(虽然可能还不清楚),我希望每个对象都显示在自己的单元格中。这不适用于此:(@Darkenor您有多少个对象以及您希望对象的顺序目前有两个,但最终可能会多达20个。我希望对象的name属性显示在UITableView中,然后在选择后,在另一个视图中向下钻取对象的详细信息。@Darkenor我建议您将对象存储在中NSMutableArray。这将是您的数据模型。然后您可以在数组中迭代以在UITableView中显示数据。如果需要,请使用自省来找出您的对象是什么类型的类。