2014-09-26 57 views
2

我已經下載iOS和Android的'Spika'腳本,但遇到了以下問題。當試圖編譯我收到以下錯誤:Spika-iOS:「不兼容的塊指針類型」

Incompatible block pointer types sending 'int (^)(ModelMessage *__strong, ModelMessage *__strong)' to parameter of type 'NSComparator' (aka 'NSComparisonResult (^)(__strong id, __strong id)') 

我曾嘗試將其更改爲NSComparisonResult來解決問題,但似乎無法讓我的頭周圍的問題是什麼。

下面是代碼:

NSMutableArray *removeTarget = [[NSMutableArray alloc] init]; 

for(int i = 0; i < [result count] ; i++){ 

    ModelMessage *message = [result objectAtIndex:i]; 

    if(message.valid == NO) 
     [removeTarget addObject:message]; 

} 

for(int ii = 0; ii < [removeTarget count] ; ii++){ 
    [result removeObject:[removeTarget objectAtIndex:ii]]; 
} 

NSArray *sortedAry = [result sortedArrayUsingComparator:^(ModelMessage *a, ModelMessage *b) { 
    return a.modified> b.modified; 
}]; 

int fetchNum = PagingMessageFetchNum; 
if(fetchNum > sortedAry.count) 
    fetchNum = sortedAry.count; 

return sortedAry; 

//return [sortedAry subarrayWithRange:NSMakeRange(0, fetchNum)]; 
} 

問題在於:

NSArray *sortedAry = [result sortedArrayUsingComparator:^(ModelMessage *a, ModelMessage *b) { 
    return a.modified> b.modified; 

任何幫助將不勝感激。多謝你們。

+0

你運行它的iOS 7+的? – 2014-10-03 07:28:14

+0

嘿@ViralNarshana感謝您的建議,我現在已經解決了問題 – Xenero 2014-10-12 13:25:42

回答

2

您應該在上面的代碼中不返回BOOL結果。 結果必須是NSComparisonResult類型,是枚舉

enum { 
    NSOrderedAscending = -1, 
    NSOrderedSame, 
    NSOrderedDescending 
}; 

在你的情況下,排序塊應該看起來像

NSArray *sortedAry = [result sortedArrayUsingComparator:^(ModelMessage *a, ModelMessage *b) { 
    if(a.modified<b.modified) 
     return NSOrderedAscending; 
    else if(a.modified>b.modified) 
     return NSOrderedDescending; 
    else 
     return NSOrderedSame; 
}]; 
+0

嘿@Astoria,您的答案有效。雖然真正的問題是我正在運行Xcode 6的測試版。一旦我更新到GM,它就會自行解決。我會投票你的答案,因爲它實際上是正確的。 – Xenero 2014-10-12 13:26:55