2013-10-13 70 views

回答

0

如果你不希望在設定爲大,你可以使用:

NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"lastname" ascending:YES]; 
NSArray *sortedArray = [peopleSet sortedArrayUsingDescriptors:[NSArray arrayWithObject:sort]]; 
People *person = nil; 
if (sortedArray) { 
    person = sortedArray[0]; 
} 
+0

如果唯一的需要是第一個對象,那麼排序很昂貴。最好的情況是,排序通常需要n•Log(n)次迭代,這是一個非常好的排序操作。要找到n個對象的集合/數組中的第一個對象,只需要進行n次比較。 –

+0

如果該集合非常小,並且他可以在後臺線程上執行排序,那麼它並不重要。我同意這不是理想的 – JuJoDi

0

寫方法firstObjectInSet:usingComparator:

你甚至可以讓它在NSSet中一類方法。

在該方法中,您只需遍歷集合中的對象(可能使用enumerateObjectsUsingBlock)。你需要定義一個本地(_block)變量firstObject outiside集合。並且對於每次迭代,如果新對象位於先前對象之前,則將firstObject替換爲新對象。然後枚舉完成後,返回firstObject作爲方法結果。那總是隻有一個通過該集合並返回第一個對象。

如果您不需要那麼靈活,請刪除NSComparator參數,然後硬編碼一個方法來查找第一個對象。