ios期中作业总结

 

页面介绍:

Sign.h 登陆界面

About.h 用户信息界面

NewInfo 获取通知界面

realeaseNew  发布信息界面

homepage 主页界面

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

messageDetail 信息详情界面

replyDetail 回复评论界面

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

 

学习成果:

学会了使用ios网络编程

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

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(@"登陆失败");
        }];

  

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

 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的使用就行了。

-(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 @ 2021-01-22 17:44  woodx  阅读(109)  评论(0)    收藏  举报