简体   繁体   English

调用方法时属性访问结果未使用错误

[英]Property access result unused error while invoking a method

Im using the following code to invoke a method, 我使用以下代码来调用方法,

APIRequest *apiRequest = [[APIRequest alloc]init];
apiRequest.pendingShipmentDetails ;

Im getting the following warning, 我收到以下警告,

property access result unused getters should not be used for side effects 属性访问结果未使用的吸气剂不应用于副作用

what does it mean? 这是什么意思?

and the method is getting called twice at the same time 并且该方法同时被调用两次

Following is my method, 以下是我的方法,

-(void)pendingShipmentDetails
{
    keyChain = [[KeyChainItemWrapper alloc] initWithIdentifier:@"LoginController" accessGroup:nil];
    NSString *username = [keyChain objectForKey:(__bridge id)(kSecAttrLabel)];

    NSString *bodyString = [NSString stringWithFormat:@"{\"method\":\"pending_shipment_details\",\"data\":{\"username\":\"%@\"}}",username];

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"url"]];
    NSData *postData = [bodyString dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
    [request setHTTPBody:postData];
    [request setHTTPMethod:@"POST"];
    NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[postData length]];
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];

    NSOperationQueue *queue = [[NSOperationQueue alloc] init];

    [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError)
     {
         if ([data length] > 0 && connectionError == nil)
         {
             [self receivedPendingShipmentDetailsData:data];
             NSString* pendingResponse = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
             NSData *jsonData = [pendingResponse dataUsingEncoding:NSUTF8StringEncoding];
             NSDictionary *jsonDic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:nil];
             NSDictionary *valueDict = [jsonDic objectForKey:@"value"];

             NSArray *details = [valueDict objectForKey:@"details"];

             NSMutableArray* arrayList = [[NSMutableArray alloc] init];

             for (NSDictionary *response in details) {
                 NSString *invoiceNo = [response valueForKey:@"invoice_no"];
                 NSString *shipmentNumber = [response valueForKey:@"shipment_no"];
                 NSString *invoiceDate = [response valueForKey:@"invoice_date"];
                 NSString *proformaInvoiceNumber = [response valueForKey:@"proforma_invoice_no"];
                 NSString *proformaInvoiceDate = [response valueForKey:@"proforma_invoice_date"];
                 NSString *plannedShipmentDates = [response valueForKey:@"planned_shipment_dates"];
                 NSString *pointOfContact =[[response objectForKey:@"point_of_contact"] valueForKey:@"empid"];
                 NSString *pendingStatus = [response valueForKey:@"status"];
                 NSDictionary *productName = [response valueForKey:@"products"];
                 NSDictionary *quantity = [response valueForKey:@"quantity"];
                 NSDictionary *rate = [response valueForKey:@"rate"];
                 NSDictionary *amount = [response valueForKey:@"amount"];
                 NSDictionary *productImages = [response valueForKey:@"product_image"];
                 NSDictionary *point_of_contact = [response valueForKey:@"point_of_contact"];

                 NSString *qty;
                 NSString *rte;
                 NSString *img;
                 NSString *address;
                 NSString *name;
                 NSString *amt;

                 for (int i = 0; i < [productName count]; i++) {
                     //  NSLog(@"product name %@",[productName valueForKey:[NSString stringWithFormat:@"%d",i ]]);
                     name = [productName valueForKey:[NSString stringWithFormat:@"%d",i ]];
                 }

                 for (int i = 0; i < [quantity count]; i++) {
                     //  NSLog(@"quantity %@",[quantity valueForKey:[NSString stringWithFormat:@"%d",i ]]);
                     qty = [quantity valueForKey:[NSString stringWithFormat:@"%d",i ]];
                 }

                 for (int i = 0; i < [rate count]; i++) {
                     //  NSLog(@"rate %@",[rate valueForKey:[NSString stringWithFormat:@"%d",i ]]);
                     rte = [rate valueForKey:[NSString stringWithFormat:@"%d",i ]];
                 }

                 for (int i = 0; i < [amount count]; i++) {
                     // NSLog(@"amount %@",[amount valueForKey:[NSString stringWithFormat:@"%d",i ]]);
                     amt = [amount valueForKey:[NSString stringWithFormat:@"%d",i ]];
                 }


                 for (int i = 0; i < [productImages count]; i++) {
                     // NSLog(@"product image %@",[productImages valueForKey:[NSString stringWithFormat:@"%d",i ]]);
                     img = [productImages valueForKey:[NSString stringWithFormat:@"%d",i ]];
                 }

                 for (int i = 0; i < [point_of_contact count]; i++) {
                     //  NSLog(@"pt of ct %@",[point_of_contact valueForKey:[NSString stringWithFormat:@"empid" ]]);
                     address = [point_of_contact valueForKey:[NSString stringWithFormat:@"empid" ]];
                 }


                 NSManagedObjectContext *context = [self managedObjectContext];

                 //update
                 if((self.pendingShipmentDAO) ) {
                     NSLog(@"update");
                     [self.pendingShipmentDAO setValue:shipmentNumber forKey:@"shipmentno"];
                     [self.pendingShipmentDAO setValue:proformaInvoiceNumber forKey:@"proforma_invoice_no"];
                     [self.pendingShipmentDAO setValue:proformaInvoiceDate forKey:@"proforma_invoice_date"];
                     [self.pendingShipmentDAO setValue:invoiceNo forKey:@"invoice_no"];
                     [self.pendingShipmentDAO setValue:invoiceDate forKey:@"invoice_date"];
                     [self.pendingShipmentDAO setValue:plannedShipmentDates forKey:@"planned_shipment_date"];
                     [self.pendingShipmentDAO setValue:address forKey:@"point_of_contact"];
                     [self.pendingShipmentDAO setValue:address forKey:@"empid"];
                     [self.pendingShipmentDAO setValue:name forKey:@"products"];
                     [self.pendingShipmentDAO setValue:qty forKey:@"quantity"];
                     [self.pendingShipmentDAO setValue:rte forKey:@"rate"];
                     [self.pendingShipmentDAO setValue:amt forKey:@"amount"];
                     [self.pendingShipmentDAO setValue:img forKey:@"product_image"];
                     [self.pendingShipmentDAO setValue:pendingStatus forKey:@"status"];
                 }else {

                     NSLog(@"create");

                     NSManagedObject *pendingShipment = [NSEntityDescription insertNewObjectForEntityForName:@"PendingShipmentDetails" inManagedObjectContext:context];

                     // [self deleteAllPreviousData];
                     [pendingShipment setValue:shipmentNumber forKey:@"shipmentno"];
                     [pendingShipment setValue:proformaInvoiceNumber forKey:@"proforma_invoice_no"];
                     [pendingShipment setValue:proformaInvoiceDate forKey:@"proforma_invoice_date"];
                     [pendingShipment setValue:invoiceNo forKey:@"invoice_no"];
                     [pendingShipment setValue:invoiceDate forKey:@"invoice_date"];
                     [pendingShipment setValue:plannedShipmentDates forKey:@"planned_shipment_date"];
                     [pendingShipment setValue:address forKey:@"point_of_contact"];
                     [pendingShipment setValue:address forKey:@"empid"];
                     [pendingShipment setValue:name forKey:@"products"];
                     [pendingShipment setValue:qty forKey:@"quantity"];
                     [pendingShipment setValue:rte forKey:@"rate"];
                     [pendingShipment setValue:amt forKey:@"amount"];
                     [pendingShipment setValue:img forKey:@"product_image"];
                     [pendingShipment setValue:pendingStatus forKey:@"status"];


                 }
             }
         }

         else if ([data length] == 0 && connectionError == nil)
         {
             [self emptyReply];
         }
         else if (connectionError != nil && connectionError.code == NSURLErrorTimedOut)
         {
             [self timedOut];
         }
         else if (connectionError != nil)
         {
             [self downloadError:connectionError];
         }
     }];

}

Dot notation is used for properties (getting or setting) them. 点表示法用于属性(获取或设置)它们。 So here the compiler understands that you want to call the getter of pendingShipmentDetails which is not the case. 因此,这里的编译器理解您要调用的是pendingShipmentDetails的getter。 You must use [] to call methods. 您必须使用[]来调用方法。 Replace apiRequest.pendingShipmentDetails with [apiRequest pendingShipmentDetails] and the warning should disappear. apiRequest.pendingShipmentDetails替换为[apiRequest pendingShipmentDetails] ,警告应消失。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM