2017-07-09 37 views
-2

我对块很不熟悉。我没有掌握语法。Objective-C:通过变量来阻止

我想要做的是将方法的第一部分中获得的日期传递到完成块,以便在完成块运行(即完成其他所有操作)之前不设置日期。任何人都可以建议如何做到这一点?以下给出了未声明标识符secondItem的错误使用。

编辑:使用__block关键字

- (void)myMethod: (NSInteger *) state { 
    switch (state) { 
     case 1: { 
//do some stuff 
} completion:^(BOOL finished) { 
        //finish up 
       }]; 
      } 
      break; 
     } 
default: { 
Items* firstItem = [self.fetchedResultsController objectAtIndexPath:indexPath]; 
      __ block NSDate* myDate = firstitem.date; 
Items* secondItem = [self.fetchedResultsController objectAtIndexPath:sourceIndexPath]; 


      } completion:^(BOOL finished) { 

       secondItem.date = __block myDate;//ERROR THROWN HERE 
      }]; 
      break; 
     } 
    } 
+2

你可以请张贴真实的代码。你发布的代码是糟糕的缩进和语法错误。 – rmaddy

+0

如果我理解正确,你想创建完成块方法吗?如果是这样看看这个:https://xcodenoobies.blogspot.my/2017/07/how-to-basic-of-xcode-methods-functions.html – GeneCode

回答

-1

尝试。该文档可以发现here

+0

我一直在尝试......只是编辑了问题。在myDate没有摆脱那里的错误之前添加__block。但是,我仍然得到secondItem的错误是什么语法? – user6631314