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语言的代码,幸好这个学期,我们学了服务计算,才能看懂一些,加上有了同学互相帮助,摸索,才把作业写了出来。其次就是上传图片还不会用,其实也挺简单,只是要上传图片可能失败,需要经过压缩这一步,比较麻烦而已,其他还好。

浙公网安备 33010602011771号