1, POST 傳參 NSArray
segmentfault.com
最好的方式,應該是接口優化,不應該多層結構,最好是單層結構。也就是直接傳字典,字典里全部都是簡單的基本類型數據。
如果不能優化,那么就將數組轉化成JSON字符串,或者將數組中的數組按照一定的規則來來拼接,比如a|b|c這樣代替傳數組,后臺接收到時,就按照規則來分割得到數組了。
+(void)postHttpRequestWithURLStr:(NSString )urlStr withParametersArray:(NSArray )parameters withResponseBlock:(void(^)(id sender))completion{
AFHTTPSessionManager *session = [AFHTTPSessionManager manager];
session.responseSerializer = [AFHTTPResponseSerializer serializer];
session.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
session.requestSerializer = [AFJSONRequestSerializer serializer];
session.responseSerializer = [AFJSONResponseSerializer serializer];
[session.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[session.requestSerializer setValue:@"application/json;charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[session POST:urlStr parameters:parameters success:^(NSURLSessionDataTask * _Nonnull task, id _Nonnull responseObject)
{
NSLog(@"POST請求成功");
completion(responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"POST請求失敗");
}];
}
2, 不好的 數組拼接
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear: animated ];
[self loadLifePhotosData ];
}
用這個 [self.photoUrls removeAllObjects ];
用這個 self.photoUrls = nil , 就 GG 了
- (void)loadLifePhotosData
{
[self.photoUrls removeAllObjects ]; // 否則 ,有一個 拼接
NSString * urlStrin = [NSString stringWithFormat: @"%@userId=%@", kLifephoto, [MainAccountModel shareMainAccountModel].idLoginAccout ];
//下載數據
[ZheProgressHUD showOnView: self.view ];
__weak typeof(self) weakSelf = self;
// 問題
[GetNetWorkDataMethod getDataWithParameters: nil requestType:ZheNetworkingRequestTypeGet andWithURLStr: urlStrin userInfo: nil success:^(NSURLSessionDataTask *task, NSDictionary *responseObject, NSDictionary *userInfo) {
//responseObject;
for (NSDictionary * dictionaryTemp in responseObject){
NSString * urlStri = [dictionaryTemp valueForKey: @"Url" ];
[weakSelf.photoUrls addObject: urlStri ];
}