完成 Moment 和 Mine 模块的 API 集成
Moment 模块: - ✅ 集成真实动态列表 API (momentsRecommendList) - ✅ 集成点赞 API (momentsLike) - ✅ 使用 MomentsInfoModel 替代 mock 数据 - ✅ 实现时间格式化(相对时间显示) - ✅ 实现点赞状态切换和 UI 更新 - ✅ 分页加载功能完善 Mine 模块: - ✅ 集成用户信息 API (getUserInfo) - ✅ 集成钱包信息 API (getUserWalletInfo) - ✅ 使用 UserInfoModel 和 WalletInfoModel - ✅ 头部视图动态显示真实数据 - ✅ 昵称、等级、经验、关注/粉丝数 改进: - NewMomentCell: 支持点赞交互,实时更新 - NewMineViewController: viewWillAppear 时自动刷新数据 - 所有 API 调用都有错误处理和日志 下一步: - 测试真实 API 调用是否成功 - 完善评论和发布功能 - 准备图片资源
This commit is contained in:
@@ -9,6 +9,10 @@
|
||||
#import "NewMomentViewController.h"
|
||||
#import "NewMomentCell.h"
|
||||
#import <Masonry/Masonry.h>
|
||||
#import "Api+Moments.h"
|
||||
#import "AccountInfoStorage.h"
|
||||
#import "MomentsInfoModel.h"
|
||||
#import <MJExtension/MJExtension.h>
|
||||
|
||||
@interface NewMomentViewController () <UITableViewDelegate, UITableViewDataSource>
|
||||
|
||||
@@ -25,8 +29,8 @@
|
||||
|
||||
// MARK: - Data
|
||||
|
||||
/// 动态数据源
|
||||
@property (nonatomic, strong) NSMutableArray *dataSource;
|
||||
/// 动态数据源(MomentsInfoModel 数组)
|
||||
@property (nonatomic, strong) NSMutableArray<MomentsInfoModel *> *dataSource;
|
||||
|
||||
/// 当前页码
|
||||
@property (nonatomic, assign) NSInteger currentPage;
|
||||
@@ -87,28 +91,36 @@
|
||||
self.isLoading = YES;
|
||||
NSLog(@"[NewMomentViewController] 开始加载数据,页码: %ld", (long)self.currentPage);
|
||||
|
||||
// TODO: 调用 API 加载动态数据
|
||||
// 暂时使用模拟数据
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||
// 模拟数据
|
||||
for (int i = 0; i < 10; i++) {
|
||||
NSDictionary *mockData = @{
|
||||
@"id": @(self.currentPage * 10 + i),
|
||||
@"content": [NSString stringWithFormat:@"这是第 %ld 页的第 %d 条动态", (long)self.currentPage, i],
|
||||
@"images": @[],
|
||||
@"likeCount": @(arc4random() % 100),
|
||||
@"commentCount": @(arc4random() % 50),
|
||||
};
|
||||
[self.dataSource addObject:mockData];
|
||||
}
|
||||
|
||||
self.currentPage++;
|
||||
// 调用真实 API 加载动态列表
|
||||
NSString *page = [NSString stringWithFormat:@"%ld", (long)self.currentPage];
|
||||
NSString *pageSize = @"10";
|
||||
NSString *types = @"0,2"; // 类型:0=图片,2=文字
|
||||
|
||||
[Api momentsRecommendList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
|
||||
self.isLoading = NO;
|
||||
[self.tableView reloadData];
|
||||
[self.refreshControl endRefreshing];
|
||||
|
||||
NSLog(@"[NewMomentViewController] 数据加载完成,当前数据量: %lu", (unsigned long)self.dataSource.count);
|
||||
});
|
||||
if (code == 200 && data.data) {
|
||||
// 解析数据
|
||||
NSArray *list = [MomentsInfoModel mj_objectArrayWithKeyValuesArray:data.data];
|
||||
|
||||
if (list.count > 0) {
|
||||
[self.dataSource addObjectsFromArray:list];
|
||||
self.currentPage++;
|
||||
[self.tableView reloadData];
|
||||
NSLog(@"[NewMomentViewController] 加载成功,新增 %lu 条动态", (unsigned long)list.count);
|
||||
} else {
|
||||
NSLog(@"[NewMomentViewController] 没有更多数据");
|
||||
}
|
||||
} else {
|
||||
NSLog(@"[NewMomentViewController] 加载失败: code=%ld, msg=%@", (long)code, msg);
|
||||
// 如果 API 失败,显示提示
|
||||
if (self.dataSource.count == 0) {
|
||||
// 首次加载失败,显示空状态
|
||||
[self showAlertWithMessage:msg ?: @"加载失败"];
|
||||
}
|
||||
}
|
||||
} page:page pageSize:pageSize types:types];
|
||||
}
|
||||
|
||||
- (void)onRefresh {
|
||||
@@ -143,8 +155,8 @@
|
||||
NewMomentCell *cell = [tableView dequeueReusableCellWithIdentifier:@"NewMomentCell" forIndexPath:indexPath];
|
||||
|
||||
if (indexPath.row < self.dataSource.count) {
|
||||
NSDictionary *data = self.dataSource[indexPath.row];
|
||||
[cell configureWithData:data];
|
||||
MomentsInfoModel *model = self.dataSource[indexPath.row];
|
||||
[cell configureWithModel:model];
|
||||
}
|
||||
|
||||
return cell;
|
||||
|
Reference in New Issue
Block a user