[iOS]this class is not key value coding-compliant for the key

在xib增加新的元件,並透過IBOutlet去連結h檔,會一直報錯
this class is not key value coding-compliant for the key

後來發現是連結時,Object選項要主動選擇對應的h檔檔名,不然預設會是File's Owner就會報錯,之前開發都不會遇到這問題,不知是否為Xcode的bug捏(✘﹏✘ა)

正確的設定圖


錯誤的設定圖

AFMultipartFormData使用JSON

AFNetworking處理上傳檔案時,用來組合request參數的AFMultipartFormData,除了能夾帶file,還可以包含其他request parameter,例如

AFHTTPRequestOperation *requestOperation = [manager POST:urlString parameters:nil constructingBodyWithBlock:^(id formData) {
        // 上傳圖片檔案
        UIImage *uploadImage =  [UIImage imageNamed:@"img_test.png"];
        NSData  *imageData = [CommonObject reduceImageSize:uploadImage];
        [formData appendPartWithFileData:imageData name:@"file" fileName:uploadFileName mimeType:@"text/plain"];
     
        // 也可以包含其他request parameter
[formData appendPartWithFormData:[@"Karen_Chang" dataUsingEncoding:NSUTF8StringEncoding]
                                    name:@"UserId"];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"%@", responseObject);
 } failure:^(AFHTTPRequestOperation *operation , NSError *error) {
        NSLog(@"%@", error);
}];

若request parameter是NSArray,NSArray又由一堆JSON Object組成,該如何append formData???

直接將NSArrayNSData
NSData *inputArray1 = [NSKeyedArchiver archivedDataWithRootObject:origionalArray];
[formData appendPartWithFormData:inputArray1 name:@"ArrayInput"];
會拋出如下錯誤
Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: internal server error (500)" UserInfo={NSUnderlyingError=0x7ff24545fa50 {Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable content-type: text/html" 

後來改寫法如下,就成功了^^
NSError *writeError = nil;
NSData *inputArray2 =
[NSJSONSerialization dataWithJSONObject:origionalArray
                                options:NSJSONWritingPrettyPrinted
                                  error:&writeError];
[formData appendPartWithFormData:inputArray2 name:@"ArrayInput"];