将Apple照片样本翻译成Swift

时间:2015-11-19 08:28:42

标签: ios swift

我正在尝试将apple's Photos样本转换为Swift以满足我的需求。但是,当我在Objective-C中看到此符号^时,我总是遇到问题。所以,如果有人想向我解释,试着去清理并理解它。

这是我试图转换的代码

 dispatch_async(dispatch_get_main_queue(), ^{
    // Loop through the section fetch results, replacing any fetch results that have been updated.
    NSMutableArray *updatedSectionFetchResults = [self.sectionFetchResults mutableCopy];
    __block BOOL reloadRequired = NO;

    [self.sectionFetchResults enumerateObjectsUsingBlock:^(PHFetchResult *collectionsFetchResult, NSUInteger index, BOOL *stop) {
        PHFetchResultChangeDetails *changeDetails = [changeInstance changeDetailsForFetchResult:collectionsFetchResult];

        if (changeDetails != nil) {
            [updatedSectionFetchResults replaceObjectAtIndex:index withObject:[changeDetails fetchResultAfterChanges]];
            reloadRequired = YES;
        }
    }];

    if (reloadRequired) {
        self.sectionFetchResults = updatedSectionFetchResults;
        [self.tableView reloadData];
    }

});

这是我的快捷代码。

 dispatch_async(dispatch_get_main_queue(), {
        let updatedSectionFetchResults = self.sectionFetchResults.mutableCopy() as! NSMutableArray
        let reloadRequired: Bool = false
        self.sectionFetchResults.enumerateObjectsUsingBlock(collectionsFetchResult: PHFetchResult, index: NSInteger, stop: Bool) {
            let chageDetails: PHFetchResultChangeDetails = changeInstance.changeDetailsForFetchResult(collectionsFetchResult)
            if changeDetails != nil {
                updatedSectionFetchResults.replaceObjectAtIndex(index, withObject: changeDetails.fetchResultAfterChanges)
            }
        }
        })

这一行self.sectionFetchResults.enumerateObjectsUsingBlock(collectionsFetchResult: PHFetchResult, index: NSInteger, stop: Bool)我不断获得Extra argument collectionFetchResult in call

1 个答案:

答案 0 :(得分:1)

^符号通常表示Objective-C块名称的出现位置。

通常,未指定名称会导致匿名阻止。

http://goshdarnblocksyntax.com/是有关块可以在Objective-C中采用的最常见表单的快速参考。

Apple documentation on blocks也是理解不同形式的宝贵参考。

使用Swift,闭包取代了块,并以不同的语法以相同的方式操作。关于http://goshdarnclosuresyntax.com/的闭包的相应快速参考。