2013-11-24 3 views
0

나는 점의있는 NSMutableArray을 주문 코드 조각을 배열을 정렬하려면 : 이것은 내 첫 번째 프로젝트에 완벽하게 잘 작동오류, CGPoints

[points sortUsingComparator:^NSComparisonResult (id firstObject, id secondObject) 
{ 
    CGPoint firstPoint = [firstObject CGPointValue]; 
    CGPoint secondPoint = [secondObject CGPointValue]; 
    return firstPoint.y>secondPoint.y; 
}]; 

. 그런 다음이 프로젝트를 다른 프로젝트에서 사용하려고했습니다. 기본적으로 전체 클래스를 복사하여 별도의 데모 프로젝트로 분할했습니다. '나는 새 프로젝트 내에서 다른 클래스의 코드를 삽입하는 경우, 그것은, 그러나 결코 내 원래의 클래스 내, 컴파일

Cannot initialize return object of type 'NSComparisonResult' with an rvalue of type 'bool'.

기이 Classname.mm을 : 두 번째 프로젝트에서 엑스 코드 오류로 구축 실패 '. .mm은 원본 프로젝트와 동일하며 모든 동일한 헤더와 변수가 포함됩니다.

두 프로젝트 모두 Xcode 5.0.1에서 iOS 7.0 용으로 컴파일됩니다.

누구나 내 새 프로젝트에서 한 클래스에서만 이런 일이 일어나는 이유를 아는 사람이 있습니까?

감사

답변

4

블록 타입 NSComparisonResult 값을 반환 할 필요가있다. 너는 그렇게하지 않는다.

시도 :

[points sortUsingComparator:^NSComparisonResult (id firstObject, id secondObject) 
{ 
    CGPoint firstPoint = [firstObject CGPointValue]; 
    CGPoint secondPoint = [secondObject CGPointValue]; 
    if (firstPoint.y > secondPoint.y) { 
     return NSOrderedDescending; 
    } else if (firstPoint.y < secondPoint.y) { 
     return NSOrderedAscending; 
    } else { 
     return NSOrderedSame; 
    } 
}]; 

내가 뒤로 "오름차순/내림차순"값을 가질 수 있습니다. 역순으로 결과를 얻으면 두 반환 값을 바꿉니다.

+0

감사합니다. rmaddy. 컴파일러 오류가 제거됩니다. 흥미로운 점은 다른 프로젝트에서는 필요하지 않다는 것입니다. 나는 왜 이것이 한 프로젝트에서 왜 효과가 있었는지, 또 다른 프로젝트는 (똑같은) 똑같은지를 알기를 흥미롭게 느낍니다 ... 그래서 이전 프로젝트에서 나는 단지 비교를 할 수 있었고 그에 따라 올바른 값을 반환했습니다. – wickets