ios期中作业总结

 

页面介绍:

Sign.h 登陆界面

About.h 用户信息界面

NewInfo 获取通知界面

realeaseNew  发布信息界面

homepage 主页界面

Square 广场界面 (主页界面和广场界面类似,但是获取数据的API不一样)

messageDetail 信息详情界面

replyDetail 回复评论界面

PhotoViewController 点击放大图片,下载图片界面

 

学习成果:

学会了使用ios网络编程

GET的用法和POST的用法差不多

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
NSString *url = @"http://172.18.178.56/api/user/login/pass";
        NSDictionary *parameters = @{@"name": self.email_textField.text,
                                     @"password": self.password_textField.text};
        AFHTTPSessionManager *manage = [AFHTTPSessionManager manager];
        // 设置请求体为JSON
        manage.requestSerializer = [AFJSONRequestSerializer serializer];
        // 设置响应体为JSON
        manage.responseSerializer = [AFJSONResponseSerializer serializer];
         
        [manage POST: url parameters: parameters headers: nil progress: ^(NSProgress * _Nonnull uploadProgress) {
            //进度
        } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
            // 登陆成功!
            NSLog(@"登陆成功 %@", responseObject[@"State"]);
            if (![responseObject[@"State"]  isEqual: @"success"]) {
                UIAlertController * alert = [UIAlertController alertControllerWithTitle:@"登陆失败" message:@"" preferredStyle:UIAlertControllerStyleAlert];
                 
                [self presentViewController:alert animated:YES completion:nil];
                [self performSelector:@selector(dismiss:) withObject:alert afterDelay:0.5];
                 
                 
            }
            UINavigationController *unc = self.navigationController;
             
            //更改 navigation根页面的方法
            NSMutableArray *controllers = [NSMutableArray arrayWithArray: unc.viewControllers];
            controllers[0] = [[About alloc] init];
            [self.navigationController setViewControllers:controllers];
             
             
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
            NSLog(@"登陆失败");
        }];

  

 另外还学会了上传图片和视频的方法,关键是要获取路径

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
NSString * url2 = @"http://172.26.26.145:8080/uploadfiles";
   //如果没有图片
   NSLog(@"开始发布");
    
    
   AFHTTPSessionManager * manager2 = [AFHTTPSessionManager manager];
   manager2.responseSerializer = [AFJSONResponseSerializer serializer];
   manager2.requestSerializer = [AFJSONRequestSerializer serializer];
   NSMutableDictionary *params = [NSMutableDictionary dictionary];
   BOOL check_is_public = true;
    
   [params setObject: _timeTextTield.text  forKey : @"name"];
   [params setObject: _diaryTextView.text forKey : @"video"];
    
   [manager2 POST:url2 parameters:params headers:nil constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
       UIImage * image = self.fengmian_image;
       NSData * fileData = UIImageJPEGRepresentation(image, 1);
       NSString * file = @"image";
       [formData appendPartWithFileData:fileData name: file fileName: file mimeType:@"image/"];
 
       NSString * str_filePath = [[NSString alloc] initWithFormat: @"%@%@", self.preURL, self.videoName];
       NSLog(@"%@", str_filePath);
       NSData * temp  = [[NSData alloc] initWithContentsOfFile: str_filePath];
       [formData appendPartWithFileData:temp name:@"video" fileName: @"video" mimeType:@"video/"];
       NSLog(@"上传视频中!!!!!!!");
   } progress:^(NSProgress * _Nonnull uploadProgress) {
       NSLog(@"%@", uploadProgress);
   } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
       NSLog(@"上传成功 %@",responseObject);
   } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
       NSLog(@"上传失败 %@",error);
   }];
    
   NSLog(@"发布结束");

 

tableView中自定义cell

在构造

- (UITableViewCell *)tableView:(nonnull UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 函数中,直接把cell当成一个UIView然后进行构建就可以了。

 

在回复评论这个API上还挺复杂的。要注意父ID的使用就行了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
-(void)liuyanBtnAction:(UIButton *)btn{
    NSNumber * boolNumber = [NSNumber numberWithBool:YES];
    NSDictionary * comment = [[NSDictionary alloc] initWithDictionary: self.data[@"Comment"]];
    NSString *url = @"http://172.18.178.56/api/comment";
    NSLog(@"%@", comment[@"FatherID"]);
    NSDictionary *parameters = @{@"isReply": boolNumber,
                                 @"content": self.liuyanField.text,
                                 @"fatherId": comment[@"UserID"],
                                 @"contentId": comment[@"ID"]
                                 };
    AFHTTPSessionManager *manage = [AFHTTPSessionManager manager];
    // 设置请求体为JSON
    manage.requestSerializer = [AFJSONRequestSerializer serializer];
    // 设置响应体为JSON
    manage.responseSerializer = [AFJSONResponseSerializer serializer];
    [manage POST:url parameters:parameters headers:nil progress:^(NSProgress * _Nonnull uploadProgress) {
        //进度
    } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
        // 登陆成功!
        NSLog(@"评论成功 %@", responseObject);
        // 添加评论
        [self getComments];
        self.liuyanField.text = @"";
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"评论失败");
    }];
     
}

  

 

感受:

这次作业,最难的点,个人觉得是获取到的数据不一致,需要自己转化数据同步。以及找不到API,需要看GO语言的代码,幸好这个学期,我们学了服务计算,才能看懂一些,加上有了同学互相帮助,摸索,才把作业写了出来。其次就是上传图片还不会用,其实也挺简单,只是要上传图片可能失败,需要经过压缩这一步,比较麻烦而已,其他还好。

posted @   woodx  阅读(100)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示