2012-09-23 25 views
2

剛剛更新xcode到4.5,我收到我之前沒有收到的iOS應用程序中的錯誤。更新前沒有發生問題。xcode 4.5是否改變了sortedArrayUsingComparator + blocks?

基本上,我有一個需要基於一些其它不相關的測試分選,陣列..

NSArray *sortedArray = [arrayFiles sortedArrayUsingComparator:^(id a, id b) { 
    NSString *first = [(PPFile*)a name]; 
    NSString *second = [(PPFile*)b name]; 

    if ([a isFileAvailableForRead] && ![b isFileAvailableForRead]) { 

     return NSOrderedAscending; 
    }else if(![a isFileAvailableForRead] && [b isFileAvailableForRead]) { 

     return NSOrderedDescending; 
    } 

    return [first compare:second]; 

}]; 

的錯誤是在數據塊的最後返回:

 Return type 'NSComparisonResult' (aka 'enum NSComparisonResult') must match previous type 'NSInteger' (aka 'int') when block literal has unspecified explicit return type 

感謝。

+0

的Xcode沒有改變任何東西。它可能只是改變頭文件的框架,但Xcode有**絕對與此無關。** – 2012-11-10 17:06:55

回答

6

你忘了返回值類型:

NSArray *sortedArray = [arrayFiles sortedArrayUsingComparator:^NSComparisonResult(id a, id b) { 
    < your code> 
}]; 
+1

乾杯..任何想法爲什麼這似乎沒有發生在舊版本? – user1020317

+0

我忘了指定將^(id a,id b)解釋爲^ void(id,id),但參數的類型是^ NSComparisonResult(id,id)。 –