2012-11-10 31 views
1

我有一個類似這裏概述了一個問題: Has xcode 4.5 changed sortedArrayUsingComparator + blocks?返回類型 「NSComparaisonResult」 Xcode的更新後

int index = [AAjouter indexOfObject:match inSortedRange:NSMakeRange(0, [AAjouter count]) options:NSBinarySearchingInsertionIndex usingComparator:^(id obj1, id obj2) { 


Match *match1 = (Match *) obj1; 
Match *match2 = (Match *) obj2; 

if ([match1.matchDate isEqualToDate:match2.matchDate]) { 
    if ([match1.paysCompetition isEqualToString:match2.paysCompetition]) { 
     if ([[NSNumber numberWithInt:match1.ordreCompetition] isEqualToNumber:[NSNumber numberWithInt:match2.ordreCompetition]]) { 
      if ([match1.equipeANom isEqualToString:match2.equipeANom]) { 
       return NSOrderedSame; 
      } 
      else { 
       return [match1.equipeANom compare:match2.equipeANom]; 
      } 
     } 
     else { 
      return [[NSNumber numberWithInt:match1.ordreCompetition] compare:[NSNumber numberWithInt:match2.ordreCompetition]]; 
     } 
    } 
    else { 
     return [match1.paysCompetition compare:match2.paysCompetition]; 
    } 
} 
else { 
    return [match1.matchDate compare:match2.matchDate]; 
} 

}]。

[AAjouter insertObject:match atIndex:index]; 休息;

我有這樣的錯誤消息:

「返回類型 'NSComparaisonResult'(又名 'NSComparaisonResult')必須 比賽之前的返回類型 'NSIntger'(又名 '詮釋')」

在每個代碼行之後:

return [[NSNumber numberWithInt:match1.ordreCompetition] compare:[NSNumber numberWithInt:match2.ordreCompetition]]; 
return [match1.paysCompetition compare:match2.paysCompetition]; 
return [match1.matchDate compare:match2.matchDate]; 

你有想法嗎?

+0

看起來像方法被聲明爲返回'int',但是你不顯示它,所以我不知道肯定... – trojanfoe

+0

葉,可能它被聲明爲東西在標題和其他東西在m文件 –

回答

3

明確指定返回類型:

^NSComparisonResult(id obj1, id obj2) { ... 

編譯器通常推斷塊的返回類型,但在某些情況下,它可能會不知所措。我懷疑它可能與返回枚舉NSOrderedSame有關,在舊版本的編譯器中,枚舉類型爲int