【发布时间】:2016-06-05 22:42:59
【问题描述】:
在 Objective-C 中,我使用了现在必须转换为 Swift 的完成块的这种处理方式:
在 DetailDisplayController.h
中typedef void (^AddedCompletitionBlock)(BOOL saved, NSString *primarykey, NSUInteger recordCount);
@interface DetailDisplayController : UITableViewController
@property (nonatomic, copy) AddedCompletitionBlock completionBlock;
@property (strong, nonatomic) Details *detail;
在 DetailDisplayController.m
中- (void) saveClicked:(id)sender
{
// retrieve PK
NSString *objectId = [[[_detail objectID] URIRepresentation] absoluteString];
if (self.completionBlock != nil)
{
self.completionBlock(_rowChanged, objectId, [_fetchedResultsController.fetchedObjects count]);
}
_rowChanged 和 _fetchedResultsController 是实例变量
并且在 DetailViewController.m 调用类中,使用了传递的块
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"DetailDisplay"])
{
DetailDisplayController *detailDisplayController = segue.destinationViewController;
...
detailDisplayController.completionBlock = ^(BOOL saved, NSString *sorter, NSUInteger recordCount)
{
if (saved)
...
如何在 Swift 中做到这一点?
【问题讨论】:
-
Swift 中的函数可以像变量一样传递。
-
好的,我可以从调用类传递一个函数。但是如何共享被调用类中的变量呢?
-
请展示您正在尝试做的事情以及解决方案的尝试(在 Swift 中)。
-
抱歉垫片,没有什么可显示的,因为我不知道如何开始 :-( 我只是在谷歌上搜索解决方案。同时我认为,我的 Swift 知识太差,无法解决这……