gpt4 book ai didi

ios - 来自两个 API 的一个 TableView

转载 作者:行者123 更新时间:2023-11-28 22:15:46 25 4
gpt4 key购买 nike

有没有办法让我使用两个单独的网络 API 填充一个 UITableView?我确定有,但我不太明白。

目前我正在完美地从一个网络 API 中提取;但我需要从另一个中提取,然后将它们合并到一个 UITableView 中。

(我正在使用 RestKit)

(我尝试集成的第二个 API 是 Instagram,将从用户帐户中提取图片/文本)

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// RestKit
NSString *baseURL = @"http://api.firstwebsite.com/v1";
RKObjectManager *manager = [RKObjectManager sharedManager];

if (!manager) {
manager = [RKObjectManager objectManagerWithBaseURLString:baseURL];
manager.client.serviceUnavailableAlertEnabled = YES;
manager.requestQueue.showsNetworkActivityIndicatorWhenBusy = YES;
} else {
manager.client.baseURL = [RKURL URLWithString:baseURL];
}

return YES;
}

WebListViewController.m

- (void)viewDidLoad
{
[super viewDidLoad];
[[RKObjectManager sharedManager] loadObjectsAtResourcePath:
[NSString stringWithFormat:
@"/something/?limit=100&something=%@&something=%@&apikey=xxxx", var1, var2]
usingBlock:^(RKObjectLoader *loader) {
loader.onDidLoadObjects = ^(NSArray *objects){

hArray = objects;

[_tableView reloadData];

};
[loader.mappingProvider setMapping:[Fe mapping] forKeyPath:@"fe"];
loader.onDidLoadResponse = ^(RKResponse *response){
//NSLog(@"BodyAsString: %@", [response bodyAsString]);
};
}];
}

我假设我需要在 AppDelegate.m 中使用 baseURL 做一些不同的事情,因为它将有两个不同的基本 URL。

谢谢!将根据需要发布任何额外的代码!

编辑

根据 alexandresoli 的回答,这是我目前已更新的内容,但仍需要帮助:

WebListViewController.m

@property (strong, nonatomic) NSMutableArray *array;
@synthesize array;

- (void)callBothURLs {
// Call both #1 and #2 URL, not sure what specific code goes here
}

- (void)viewDidLoad {
[self callBothURLs];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// This is what I currently have, was pulling from a `Headlines` `NSArray` from web #1
return headlinesArray.count;
// I believe I need to change it to this next line...
//return array.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// Not sure what to put here with the new `NSMutableArray`
}

编辑 2

我已经为第一个网站设置了对象映射,因此我可以轻松地为 Instagram API 完成这部分工作。我所有的困惑/问题似乎都在 WebListViewController 中。不管怎样,这是一个映射示例。

映射.h

@interface Mapping : NSObject

@property (nonatomic, strong) Links *links;
@property (nonatomic, strong) NSString *headline;
@property (nonatomic, strong) NSArray *images;

+ (RKObjectMapping *) mapping;

@end

映射.m

@implementation Mapping

+ (RKObjectMapping *)mapping {
RKObjectMapping *objectMapping = [RKObjectMapping mappingForClass:[self class] usingBlock:^(RKObjectMapping *mapping) {
[mapping mapKeyPathsToAttributes:
@"headline", @"headline",
nil];
[mapping hasMany:@"images" withMapping:[Images mapping]];
}];

return objectMapping;
}

@end

最佳答案

创建一个调用两个 url 的方法,并使用 addObject 方法将每个 url 的结果存储在同一个 NSMutableArray 中。

NSMutableArray *array = [NSMutableArray new];

// for each object from URL 1, call [array addObject:object];

// for each object from URL 2, call [array addObject:object];

使用这个数组作为你的tableview的数据源;

按要求更新:

  • 您可以从 viewDidLoad 调用 populateBothUrlsMethod。
  • 之后,将常规的 uitableview 数据源方法 numberOfSectionsInTableView 和 numberOfRowsInSection 与这个新填充的数组一起使用。

更新 2:

- (void)viewDidLoad
{
[super viewDidLoad];


_array = [NSMutableArray new];


// fetch data from url 1
NSArray *arrayUrl1 = [self fetchUrl1];


// add url1 data to array
for (NSString *str in arrayUrl1) {
[_array addObject:str];
}


// fetch data from url 2
NSArray *arrayUrl2 = [self fetchUrl2];

// add url2 data to array
for (NSString *str in arrayUrl2) {
[_array addObject:str];
}

}


- (NSArray *)fetchUrl1
{
return [NSArray array];
}

- (NSArray *)fetchUrl2
{
return [NSArray array];
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// total number of objects in array
return [_array count];
}

关于ios - 来自两个 API 的一个 TableView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21743840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com