在表视图单元格中返回指定类型的UPnP设备的iOS应用程序

在表视图单元格中返回指定类型的UPnP设备的iOS应用程序,ios,objective-c,upnp,upnpx,Ios,Objective C,Upnp,Upnpx,我是Objective-C的中间人,我试图让这个应用程序返回可以在本地网络中找到的某种类型的UPnP设备。我正在使用,下面是我的代码: 在viewDidLoad中,使用已建立的UPnP对象初始化数组mDevice - (void)viewDidLoad { [super viewDidLoad]; UPnPDB* db = [[UPnPManager GetInstance] DB]; self.mDevices = [db rootDevices]; //BasicUP

我是Objective-C的中间人,我试图让这个应用程序返回可以在本地网络中找到的某种类型的UPnP设备。我正在使用,下面是我的代码: 在viewDidLoad中,使用已建立的UPnP对象初始化数组mDevice

- (void)viewDidLoad
{
    [super viewDidLoad];
    UPnPDB* db = [[UPnPManager GetInstance] DB];
    self.mDevices = [db rootDevices]; //BasicUPnPDevice
    [db addObserver:(UPnPDBObserver*)self];
    //Optional; set User Agent
    //[[[UPnPManager GetInstance] SSDP] setUserAgentProduct:@"upnpxdemo/1.0" andOS:@"OSX"];
    //Search for UPnP Devices
    [[[UPnPManager GetInstance] SSDP] searchSSDP];
}
节数仅为一节

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
     return 1;
}
我相信这是我的问题。我不能只返回我需要的设备类型。它返回所有已建立设备的行数,我只想返回指定设备的行数,即BinaryLightDevice,我在下一个代码中从XML获取此信息

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
     return [mDevices count];
}
此代码用于自定义表视图单元格的外观

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

    // Configure the cell...
    BasicUPnPDevice *device = [self.mDevices objectAtIndex:indexPath.row];

    [[cell textLabel] setText:[device friendlyName]];
if([[device urn] isEqualToString:@"urn:schemas-upnp org:device:lightswitch:1"])
{

    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
} else {
    cell.accessoryType = UITableViewCellAccessoryNone;
}

return cell;
}
我希望手机只返回灯光开关设备的名称,谢谢

EDIT:
您好,我问了一个问题,但很难回答。我提到的是:如何将存储在一行中的对象返回到先前创建的另一个对象?但我想在声明表视图单元格之前执行此操作。 例如:

BasicUPnPDevice*device=[self.mDevices objectAtIndex:indexPath.row]

这里,
*设备
接收行中的对象。我想创建另一个数组来存储过滤后的设备,这样我就可以通过这个新数组而不是包含所有已创建设备的数组来设置行数

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    return [newArray count];
}

将设备添加到mDevices阵列时,您可以在此处筛选阵列或创建一个新阵列,其中仅包含希望在tableview中显示的设备。然后,在用于行计数(numberOfRowsInSection)和用于显示tableview数据(cellForRowAtIndexPath)的tableview方法中,您将引用过滤数组中的对象。如果处理是异步的,并且在第一次显示表视图时数据不可用,则在数据可用时更新数组,并调用方法重新加载表数据以显示最近的数据。[self.tableView重载数据];调用此方法将导致tableview再次执行numberOfRowsInSection和cellForRowAtIndexPath调用,以访问过滤后的数组-rrh

将设备添加到mDevices阵列时,您可以在此处筛选阵列或创建一个仅包含希望在tableview中显示的设备的新阵列。然后,在用于行计数(numberOfRowsInSection)和用于显示tableview数据(cellForRowAtIndexPath)的tableview方法中,您将引用过滤数组中的对象。如果处理是异步的,并且在第一次显示表视图时数据不可用,则在数据可用时更新数组,并调用方法重新加载表数据以显示最近的数据。[self.tableView重载数据];调用此方法将导致tableview再次执行numberOfRowsInSection和cellForRowAtIndexPath调用,以访问过滤后的数组-rrh