【问题标题】:How to declare,initialize a integer variable and increment value of integer variable at each time when method is called again and again?每次调用方法时如何声明,初始化一个整数变量并递增整数变量的值?
【发布时间】:2018-04-18 06:59:37
【问题描述】:

考虑我想要一个名为 page 的整数变量,第一次它的值为 1。

参见 sampleViewcontroller.m 文件中的示例代码,

// sampleViewcontroller.m 

        - (void)viewDidLoad {

        [self method1];
        }

        -(void) method1
        {

        // Here I am calling one API

        [self reload];

        }

        -(void)reload
        {

        // Here I want to use that page value, whenever this method is called, that value should be incremented by one.
       // and that page value I am passing as a parameter to another method, see below

         MyWebservices *webservices=[MyWebservices sharedInstance];

                [webservices getNextPageURL:_nextPageUrl pageValue:page callbackHandler:^(NSError *error,id json,NSString* msg) {

          // some code

             }

        }

在重新加载方法中,我想使用该页面值,并希望将下面的方法作为参数传递,

[webservices getNextPageURL:_nextPageUrl pageValue:page callbackHandler:^(NSError *error,id json,NSString* msg)

以及写在Webservices.m文件中的方法定义,每次调用reload方法时都会调用该方法。在这里,我想每次都取那个页面值,当它增加时,将该页面用于下一个 api 调用。

// Webservices.m file

        -(void)getNextPageURL:(NSString*)url pageValue:(NSInteger)page callbackHandler:(callbackHandler)block{
            _userDefaults=[NSUserDefaults standardUserDefaults];

            // I want to print this page value (which is incrementing every time)
            NSLog(@"Page value is : %@",page); // incremented value
            NSString *urll=[NSString stringWithFormat:@"%@&api_key=%@&ip=%@&token=%@&page=%@",url,API_KEY,IP,[_userDefaults objectForKey:@"token"],page];

            [self httpResponseGET:urll parameter:@"" callbackHandler:^(NSError *error,id json,NSString* msg) {
                dispatch_async(dispatch_get_main_queue(), ^{
                    block(error,json,msg);
                });

            }];

        }

所以我想将 page 值从 reload 方法传递到下面的方法,所以每次都会增加值。

-(void)getNextPageURL:(NSString*)url pageValue:(NSInteger)page callbackHandler:(callbackHandler)block

【问题讨论】:

    标签: ios objective-c iphone variables increment


    【解决方案1】:

    在您的 .h 文件中写入以下内容:

    @property (nonatomic) NSInteger page;
    

    现在在 .m 文件中

    - (void)viewDidLoad {
    
     self.page = 1; // as you initially want page value to be 1. 
    [self method1];  
    }
    
    -(void) method1
     {
    
     // Here I am calling one API
     self.page = page + 1; // as you want to increment the value of page when before function is called
     [self reload];
     }
    
     -(void)reload
        {
    
        // Here I want to use that page value, whenever this method is called, that value should be incremented by one.
       // and that page value I am passing as a parameter to another method, see below
    
         MyWebservices *webservices=[MyWebservices sharedInstance];
    
                [webservices getNextPageURL:_nextPageUrl pageValue:self.page callbackHandler:^(NSError *error,id json,NSString* msg) {
    
          // some code
    
             }
    
        }
    

    【讨论】:

    • 其实这是对的,因为我想在每次调用上述方法之前增加页面值 [webservices getNextPageURL:_nextPageUrl pageValue:self.page callbackHandler:^(NSError error,id json, NSString 消息)
    【解决方案2】:

    只需在您的班级中拥有私有财产,例如

    @interface SampleViewcontroller() 
    
    @property (nonatomic) NSInteger page;
    
    @end 
    
    @implementation
    
    - (void)viewDidLoad {
      self.page = 0;
      [self method1];  
    }
    
    -(void) method1
    {
    
      // Here I am calling one API
    
      [self reload];
    
    }
    
    -(void)reload
    {
    
       // Here I want to use that page value, whenever this method is called, that value should be incremented by one.
       // and that page value I am passing as a parameter to another method, see below
    
       MyWebservices *webservices=[MyWebservices sharedInstance];    
      [webservices getNextPageURL:_nextPageUrl pageValue:self.page callbackHandler:^(NSError *error,id json,NSString* msg) {
    
          // some code
          if (!error) {
              //If success
              self.page++;
          }
      }
    
    }        
    @end
    

    【讨论】:

      【解决方案3】:
          You don't need to add a property, just add a private variable using anyone from the following ways:
      
          1. In .h file:
      
          @interface ViewController : UIViewController {
      
              NSInteger page;
          }
      
          OR 
          2. In .m file:
      
      
          @interface ViewController ()
          @end
      
          @implementation ViewController
      
          NSInteger page;
      
          // Now use the page variable in .m file:
      
          - (void)viewDidLoad {
      
              [self method1];
              }
      
              -(void) method1
              {
      
              // Here I am calling one API
      
              [self reload];
      
              }
      
              -(void)reload
              {
      
              // Here I want to use that page value, whenever this method is called, that value should be incremented by one.
             // and that page value I am passing as a parameter to another method, see below
      
               MyWebservices *webservices=[MyWebservices sharedInstance];
      
                      [webservices getNextPageURL:_nextPageUrl pageValue:page callbackHandler:^(NSError *error,id json,NSString* msg) {
      
                // some code
      
                   page ++;
      
                   }
      
              }
      

      【讨论】:

        猜你喜欢
        • 2013-04-08
        • 2019-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-27
        • 2017-04-07
        • 2016-06-27
        • 1970-01-01
        相关资源
        最近更新 更多