programing

사용자 지정 개체가 포함된 NSMutableArray를 정렬하려면 어떻게 해야 합니까?

lastcode 2023. 5. 12. 22:19
반응형

사용자 지정 개체가 포함된 NSMutableArray를 정렬하려면 어떻게 해야 합니까?

제가 하고 싶은 일은 꽤 간단해 보이지만, 웹에서 답을 찾을 수 없습니다.나는 있습니다.NSMutableArray물체의 '사람' 물체라고 가정해 보겠습니다.나는 분류하고 싶습니다.NSMutableArray입니다. 생일.NSDate.

이 방법과 관련이 있다고 생각합니다.

NSArray *sortedArray = [drinkDetails sortedArrayUsingSelector:@selector(???)];

Java에서 개체를 Comparable로 구현하거나 Collections를 사용합니다.인라인 사용자 지정 비교기로 정렬...오브젝티브-C에서 도대체 어떻게 하는 겁니까?

비교 방법

개체에 대해 비교 방법을 구현할 수 있습니다.

- (NSComparisonResult)compare:(Person *)otherObject {
    return [self.birthDate compare:otherObject.birthDate];
}

NSArray *sortedArray = [drinkDetails sortedArrayUsingSelector:@selector(compare:)];

NSSortDescriptor(더 나은)

또는 보통 훨씬 더 나은:

NSSortDescriptor *sortDescriptor;
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"birthDate"
                                           ascending:YES];
NSArray *sortedArray = [drinkDetails sortedArrayUsingDescriptors:@[sortDescriptor]];

배열에 둘 이상을 추가하면 여러 키로 쉽게 정렬할 수 있습니다.사용자 지정 비교기 방법을 사용할 수도 있습니다.설명서를 확인합니다.

블록(빛나!)

Mac OS X 10.6 및 iOS 4 이후 블록으로 정렬할 수도 있습니다.

NSArray *sortedArray;
sortedArray = [drinkDetails sortedArrayUsingComparator:^NSComparisonResult(Person *a, Person *b) {
    return [a.birthDate compare:b.birthDate];
}];

성능

-compare:그리고 블록 기반 방법은 일반적으로 사용하는 것보다 훨씬 더 빠를 것입니다.NSSortDescriptor후자는 KVC에 의존하기 때문입니다.의 큰 NSSortDescriptor데이터를 가 쉽게 할 수 NSTableView머리글 행을 클릭합니다.

내용은 다음을 하십시오.NSMutableArray방법

두 개의 객체(유형)를 사용하는 비교 기능을 설정해야 합니다.Person당신이 두 가지를 비교하고 있기 때문에Person개체) 및 컨텍스트 매개 변수입니다.

이 두 물체는 단지 예시일 뿐입니다.Person세 번째 개체는 문자열(예: @"birthDate")입니다.

는 이함는다반니다합환을 반환합니다.NSComparisonResult를 합니다.NSOrderedAscending한다면PersonA.birthDate<PersonB.birthDate은 것입다니돌올아▁return다를 반환할 것입니다.NSOrderedDescending한다면PersonA.birthDate>PersonB.birthDate마침내, 그것은 돌아올 것입니다.NSOrderedSame한다면PersonA.birthDate==PersonB.birthDate.

이것은 대략적인 의사 코드입니다. 한 날짜가 다른 날짜와 "덜", "더" 또는 "더"가 되는 것이 무엇을 의미하는지 구체화해야 합니다(예: second-sin-epoch 비교 등).

NSComparisonResult compare(Person *firstPerson, Person *secondPerson, void *context) {
  if ([firstPerson birthDate] < [secondPerson birthDate])
    return NSOrderedAscending;
  else if ([firstPerson birthDate] > [secondPerson birthDate])
    return NSOrderedDescending;
  else 
    return NSOrderedSame;
}

좀 더 컴팩트한 것을 원하는 경우 3차 연산자를 사용할 수 있습니다.

NSComparisonResult compare(Person *firstPerson, Person *secondPerson, void *context) {
  return ([firstPerson birthDate] < [secondPerson birthDate]) ? NSOrderedAscending : ([firstPerson birthDate] > [secondPerson birthDate]) ? NSOrderedDescending : NSOrderedSame;
}

만약 여러분이 이것을 많이 한다면, 인라인은 아마도 이것을 조금 더 빠르게 할 수 있을 것입니다.

저는 iOS 4에서 블록을 사용하여 이것을 했습니다.ID에서 클래스 유형으로 배열 요소를 캐스팅해야 했습니다.이 경우 점수라는 속성을 가진 점수라는 클래스였습니다.

또한 어레이의 요소가 올바른 유형이 아닌 경우 수행할 작업을 결정해야 합니다. 이 예에서는 방금 반환했습니다.NSOrderedSame하지만 제 코드에서는 예외라고 생각했습니다.

NSArray *sorted = [_scores sortedArrayUsingComparator:^(id obj1, id obj2){
    if ([obj1 isKindOfClass:[Score class]] && [obj2 isKindOfClass:[Score class]]) {
        Score *s1 = obj1;
        Score *s2 = obj2;

        if (s1.points > s2.points) {
            return (NSComparisonResult)NSOrderedAscending;
        } else if (s1.points < s2.points) {
            return (NSComparisonResult)NSOrderedDescending;
        }
    }

    // TODO: default is the same?
    return (NSComparisonResult)NSOrderedSame;
}];

return sorted;

PS: 이것은 내림차순으로 정렬하는 것입니다.

저는 모든 것을 시도했지만, 이것은 저에게 효과가 있었습니다.에서 저는 " 반에라는 " 는이다 " 른의반있 "라는.crimeScene 고리의속성으로정원를합다니그기렬하▁""의 속성으로 .crimeScene".

이것은 매력적으로 작동합니다.

NSSortDescriptor *sorter = [[NSSortDescriptor alloc] initWithKey:@"crimeScene.distance" ascending:YES];
[self.arrAnnotations sortUsingDescriptors:[NSArray arrayWithObject:sorter]];

iOS 4부터는 블록을 사용하여 정렬할 수도 있습니다.

에서 저는 이 ' 가정합니다.이은 이 특 예 제 배 객 의 위 다 이 들 반 음 을 체 환 하 는 가 다 합 니 정 있 방 ' 저 고 다 가 경 고 법 지 는 우 열 정 을 의 치 ▁an , ' ▁for ▁method다니합가정▁a▁have저▁returns이▁inposition ▁i▁'▁which▁your고있▁that▁array▁objects다▁the방특정 ▁partic ▁this는체NSInteger.

NSArray *arrayToSort = where ever you get the array from... ;
NSComparisonResult (^sortBlock)(id, id) = ^(id obj1, id obj2) 
{
    if ([obj1 position] > [obj2 position]) 
    { 
        return (NSComparisonResult)NSOrderedDescending;
    }
    if ([obj1 position] < [obj2 position]) 
    {
        return (NSComparisonResult)NSOrderedAscending;
    }
    return (NSComparisonResult)NSOrderedSame;
};
NSArray *sorted = [arrayToSort sortedArrayUsingComparator:sortBlock];

참고: "정렬된" 배열은 자동으로 해제됩니다.

게오르크 숄리의 번째 답변에는 누락된 단계가 있지만, 그때는 잘 작동합니다.

NSSortDescriptor *sortDescriptor;
sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"birthDate"
                                              ascending:YES] autorelease];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSArray *sortedArray;
sortedArray = [drinkDetails sortedArrayUsingDescriptors:sortDescriptors];

복사하고 붙여넣을 때 시간이 낭비되고 정렬된 ArrayUsingDescriptors에서 's'가 없으면 실패했기 때문에 's'가 추가했습니다.

NSSortDescriptor *sortDescriptor;
sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"birthDate" ascending:YES] autorelease];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSArray *sortedArray;
sortedArray = [drinkDetails sortedArrayUsingDescriptors:sortDescriptors];

고마워요, 잘 작동하고 있어요...

당신의.Person를 들어해야 합니다.compare:다른 것이 필요합니다.Person 목어, 반환NSComparisonResult두 물체의 관계에 따라.

그러면 당신은 전화를 할 것입니다.sortedArrayUsingSelector:와 함께@selector(compare:)그리고 그것은 이루어져야 합니다.

다른 방법도 있지만, 제가 아는 한 코코아와 동등한 것은 없습니다.Comparable인터페이스사용.sortedArrayUsingSelector:가장 고통스럽지 않은 방법일 겁니다

iOS 4 블록이 당신을 구할 것입니다 :)

featuresArray = [[unsortedFeaturesArray sortedArrayUsingComparator: ^(id a, id b)  
{
    DMSeatFeature *first = ( DMSeatFeature* ) a;
    DMSeatFeature *second = ( DMSeatFeature* ) b;

    if ( first.quality == second.quality )
        return NSOrderedSame;
    else
    {
        if ( eSeatQualityGreen  == m_seatQuality || eSeatQualityYellowGreen == m_seatQuality || eSeatQualityDefault  == m_seatQuality )
        {
            if ( first.quality < second.quality )
                return NSOrderedAscending;
            else
                return NSOrderedDescending;
        }
        else // eSeatQualityRed || eSeatQualityYellow
        {
            if ( first.quality > second.quality )
                return NSOrderedAscending;
            else
                return NSOrderedDescending;
        } 
    }
}] retain];

http://sokol8.blogspot.com/2011/04/sorting-nsarray-with-blocks.html 약간의 설명

위해서NSMutableArray을 사용합니다.sortUsingSelector장소를 합니다.새 인스턴스를 만들지 않고 장소를 정렬합니다.

다음과 같은 일반적인 방법을 사용할 수 있습니다.그것은 당신의 문제를 해결할 것입니다.

//Called method
-(NSMutableArray*)sortArrayList:(NSMutableArray*)arrDeviceList filterKeyName:(NSString*)sortKeyName ascending:(BOOL)isAscending{
    NSSortDescriptor *sorter = [[NSSortDescriptor alloc] initWithKey:sortKeyName ascending:isAscending];
    [arrDeviceList sortUsingDescriptors:[NSArray arrayWithObject:sorter]];
    return arrDeviceList;
}

//Calling method
[self sortArrayList:arrSomeList filterKeyName:@"anything like date,name etc" ascending:YES];

것 이라면, 여개데정는경우하렬를터이.NSNumbers호출로 할 수 있습니다: " 한 번 호 정 할 있 니 습 다 수 렬 의 로 출 다 니 있 습 ▁you : ▁them ▁with

[arrayToSort sortUsingSelector: @selector(compare:)];

합니다.NSNumber합니다.에서 비교 방법을 구현합니다.당신은 같은 일을 할 수 있습니다.NSString개체 또는 비교 방법을 구현하는 사용자 지정 데이터 개체의 배열에 대해서도 마찬가지입니다.

여기 비교기 블록을 사용한 코드 예제가 있습니다.각 사전이 "sort_key" 키에 숫자를 포함하는 사전 배열을 정렬합니다.

#define SORT_KEY @\"sort_key\"

[anArray sortUsingComparator: 
 ^(id obj1, id obj2) 
  {
  NSInteger value1 = [[obj1 objectForKey: SORT_KEY] intValue];
  NSInteger value2 = [[obj2 objectForKey: SORT_KEY] intValue];
  if (value1 > value2) 
{
  return (NSComparisonResult)NSOrderedDescending;
  }

  if (value1 < value2) 
{
  return (NSComparisonResult)NSOrderedAscending;
  }
    return (NSComparisonResult)NSOrderedSame;
 }];

위의 코드는 각 정렬 키에 대한 정수 값을 얻고 비교하는 작업을 거칩니다. 때부터NSNumber객체는 비교 방법을 구현하며, 훨씬 더 간단하게 다시 작성할 수 있습니다.

 #define SORT_KEY @\"sort_key\"

[anArray sortUsingComparator: 
^(id obj1, id obj2) 
 {
  NSNumber* key1 = [obj1 objectForKey: SORT_KEY];
  NSNumber* key2 = [obj2 objectForKey: SORT_KEY];
  return [key1 compare: key2];
 }];

또는 비교기 본체를 한 줄까지 증류할 수 있습니다.

  return [[obj1 objectForKey: SORT_KEY] compare: [obj2 objectForKey: SORT_KEY]];

코드가 읽기 쉽고 디버깅하기 쉽기 때문에 간단한 문장과 많은 임시 변수를 선호하는 경향이 있습니다.컴파일러는 어쨌든 임시 변수를 최적화하므로 올인원 한 줄 버전에는 이점이 없습니다.

NSSortDescriptor를 사용하여 사용자 지정 개체와 NSMutableArray를 정렬할 수 있습니다.

 NSSortDescriptor *sortingDescriptor;
 sortingDescriptor = [[NSSortDescriptor alloc] initWithKey:@"birthDate"
                                       ascending:YES];
 NSArray *sortArray = [drinkDetails sortedArrayUsingDescriptors:@[sortDescriptor]];
-(NSMutableArray*) sortArray:(NSMutableArray *)toBeSorted 
{
  NSArray *sortedArray;
  sortedArray = [toBeSorted sortedArrayUsingComparator:^NSComparisonResult(id a, id b) 
  {
    return [a compare:b];
 }];
 return [sortedArray mutableCopy];
}

저는 이런 종류의 일을 더 쉽게 만드는 목표 C로의 링크라는 범주 방법의 작은 라이브러리를 만들었습니다.키 선택기와 함께 정렬 방법을 사용하면 다음을 기준으로 정렬할 수 있습니다.birthDate다음과 같이:

NSArray* sortedByBirthDate = [input sort:^id(id person) {
    return [person birthDate];
}]

저는 방금 사용자 지정 요구 사항에 따라 다단계 정렬을 했습니다.

//값 계산

    [arrItem sortUsingComparator:^NSComparisonResult (id a, id b){

    ItemDetail * itemA = (ItemDetail*)a;
    ItemDetail* itemB =(ItemDetail*)b;

    //item price are same
    if (itemA.m_price.m_selling== itemB.m_price.m_selling) {

        NSComparisonResult result=  [itemA.m_itemName compare:itemB.m_itemName];

        //if item names are same, then monogramminginfo has to come before the non monograme item
        if (result==NSOrderedSame) {

            if (itemA.m_monogrammingInfo) {
                return NSOrderedAscending;
            }else{
                return NSOrderedDescending;
            }
        }
        return result;
    }

    //asscending order
    return itemA.m_price.m_selling > itemB.m_price.m_selling;
}];

https://sites.google.com/site/greateindiaclub/mobil-apps/ios/multilevelsortinginiosobjectivec

일부 프로젝트에서 sortUsingFunction::을(를) 사용했습니다.

int SortPlays(id a, id b, void* context)
{
    Play* p1 = a;
    Play* p2 = b;
    if (p1.score<p2.score) 
        return NSOrderedDescending;
    else if (p1.score>p2.score) 
        return NSOrderedAscending;
    return NSOrderedSame;
}

...
[validPlays sortUsingFunction:SortPlays context:nil];

»NSMutableArray매우 간단합니다.

NSMutableArray *arrayToFilter =
     [[NSMutableArray arrayWithObjects:@"Photoshop",
                                       @"Flex",
                                       @"AIR",
                                       @"Flash",
                                       @"Acrobat", nil] autorelease];

NSMutableArray *productsToRemove = [[NSMutableArray array] autorelease];

for (NSString *products in arrayToFilter) {
    if (fliterText &&
        [products rangeOfString:fliterText
                        options:NSLiteralSearch|NSCaseInsensitiveSearch].length == 0)

        [productsToRemove addObject:products];
}
[arrayToFilter removeObjectsInArray:productsToRemove];

NS 비교기를 사용하여 정렬

개체를 하려면 사용자 지정 개체를 제공해야 .NSComparator사용자 지정 개체를 비교하는 데 사용됩니다.은 록이반니다합을 합니다.NSComparisonResult두 개체의 순서를 나타내는 값입니다. 전체 배열을 는 그서전배체정을렬기위해하래.NSComparator는 다음과 같은 방식으로 사용됩니다.

NSArray *sortedArray = [employeesArray sortedArrayUsingComparator:^NSComparisonResult(Employee *e1, Employee *e2){
    return [e1.firstname compare:e2.firstname];    
}];

NS Sort Descriptor 렬정
예를 들어, 사용자 지정 클래스의 인스턴스를 포함하는 배열이 있다고 가정해 보겠습니다. Employee는 이름, 성 및 나이 속성을 가집니다.다음 예제에서는 배열 내용을 연령 키별 오름차순으로 정렬하는 데 사용할 수 있는 NSSort Descriptor를 만드는 방법을 보여 줍니다.

NSSortDescriptor *ageDescriptor = [[NSSortDescriptor alloc] initWithKey:@"age" ascending:YES];
NSArray *sortDescriptors = @[ageDescriptor];
NSArray *sortedArray = [employeesArray sortedArrayUsingDescriptors:sortDescriptors];

정의 합니다.
이름은 문자열이며, 사용자에게 표시할 문자열을 정렬할 때는 항상 지역화된 비교를 사용해야 합니다.종종 대소문자를 구분하지 않는 비교도 수행하려고 합니다.다음은 (localizedStandardCompare:)를 사용하여 성과 이름을 기준으로 배열을 정렬하는 예제입니다.

NSSortDescriptor *lastNameDescriptor = [[NSSortDescriptor alloc]
              initWithKey:@"lastName" ascending:YES selector:@selector(localizedStandardCompare:)];
NSSortDescriptor * firstNameDescriptor = [[NSSortDescriptor alloc]
              initWithKey:@"firstName" ascending:YES selector:@selector(localizedStandardCompare:)];
NSArray *sortDescriptors = @[lastNameDescriptor, firstNameDescriptor];
NSArray *sortedArray = [employeesArray sortedArrayUsingDescriptors:sortDescriptors];

참조 및 자세한 내용은 https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/SortDescriptors/Articles/Creating.html 을 참조하십시오.
http://www.ios-blog.co.uk/tutorials/objective-c//http://www.ios-blog.co.uk/tutorials/objective-c/how-to-sort-nsarray-with-custom-objects/

Swift의 프로토콜과 기능 프로그래밍을 사용하면 클래스가 Comparable 프로토콜을 준수하고 프로토콜에 필요한 메소드를 구현한 다음 정렬된(: ) 상위 함수를 사용하여 가변 배열을 사용할 필요 없이 정렬된 배열을 만들기만 하면 됩니다.

class Person: Comparable {
    var birthDate: NSDate?
    let name: String

    init(name: String) {
        self.name = name
    }

    static func ==(lhs: Person, rhs: Person) -> Bool {
        return lhs.birthDate === rhs.birthDate || lhs.birthDate?.compare(rhs.birthDate as! Date) == .orderedSame
    }

    static func <(lhs: Person, rhs: Person) -> Bool {
        return lhs.birthDate?.compare(rhs.birthDate as! Date) == .orderedAscending
    }

    static func >(lhs: Person, rhs: Person) -> Bool {
        return lhs.birthDate?.compare(rhs.birthDate as! Date) == .orderedDescending
    }

}

let p1 = Person(name: "Sasha")
p1.birthDate = NSDate() 

let p2 = Person(name: "James")
p2.birthDate = NSDate()//he is older by miliseconds

if p1 == p2 {
    print("they are the same") //they are not
}

let persons = [p1, p2]

//sort the array based on who is older
let sortedPersons = persons.sorted(by: {$0 > $1})

//print sasha which is p1
print(persons.first?.name)
//print James which is the "older"
print(sortedPersons.first?.name)

이 경우 "sortedArrayUsingComparator"를 사용하여 배열을 정렬합니다.아래 코드를 보십시오.

contactArray = [[NSArray arrayWithArray:[contactSet allObjects]] sortedArrayUsingComparator:^NSComparisonResult(ContactListData *obj1, ContactListData *obj2) {
    NSString *obj1Str = [NSString stringWithFormat:@"%@ %@",obj1.contactName,obj1.contactSurname];
    NSString *obj2Str = [NSString stringWithFormat:@"%@ %@",obj2.contactName,obj2.contactSurname];
    return [obj1Str compare:obj2Str];
}];

또한 제 목표는

@interface ContactListData : JsonData
@property(nonatomic,strong) NSString * contactName;
@property(nonatomic,strong) NSString * contactSurname;
@property(nonatomic,strong) NSString * contactPhoneNumber;
@property(nonatomic) BOOL isSelected;
@end

sortDescriptor를 생성한 다음 아래와 같이 sortDescriptor를 사용하여 nsmutable 배열을 정렬할 수 있습니다.

 let sortDescriptor = NSSortDescriptor(key: "birthDate", ascending: true, selector: #selector(NSString.compare(_:)))
 let array = NSMutableArray(array: self.aryExist.sortedArray(using: [sortDescriptor]))
 print(array)

Swift에서 배열 정렬


위해서Swifty아래 사람은 전 세계적으로 위의 목표를 달성하기 위한 매우 깨끗한 기술입니다. 보 들 겠 습 어 다 의 스 ▁class ▁ofUser몇 가지 속성을 가지고 있습니다.

class User: NSObject {
    var id: String?
    var name: String?
    var email: String?
    var createdDate: Date?
}

이제 우리는 다음을 기준으로 정렬해야 하는 배열을 가지고 있습니다.createdDate오름차순 및/또는 내림차순입니다.그럼 날짜 비교 기능을 추가해 보겠습니다.

class User: NSObject {
    var id: String?
    var name: String?
    var email: String?
    var createdDate: Date?
    func checkForOrder(_ otherUser: User, _ order: ComparisonResult) -> Bool {
        if let myCreatedDate = self.createdDate, let othersCreatedDate = otherUser.createdDate {
            //This line will compare both date with the order that has been passed.
            return myCreatedDate.compare(othersCreatedDate) == order
        }
        return false
    }
}

, 그럼 이제 제, 이로 .extensionArray위해서User에서 간히말과, 있는 메소드를 추가해 보겠습니다.User그 안에 있는 물건들.

extension Array where Element: User {
    //This method only takes an order type. i.e ComparisonResult.orderedAscending
    func sortUserByDate(_ order: ComparisonResult) -> [User] {
        let sortedArray = self.sorted { (user1, user2) -> Bool in
            return user1.checkForOrder(user2, order)
        }
        return sortedArray
    }
}

오름차순 사용

let sortedArray = someArray.sortUserByDate(.orderedAscending)

내림차순 사용

let sortedArray = someArray.sortUserByDate(.orderedAscending)

동일 주문에 대한 사용

let sortedArray = someArray.sortUserByDate(.orderedSame)

은 의방법에서extension다음의 경우에만 액세스할 수 있습니다.Array이 형의입니다.[User]||Array<User>

중첩된 개체에 대해 이와 같이 사용합니다.

NSSortDescriptor * sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"lastRoute.to.lastname" ascending:YES selector:@selector(caseInsensitiveCompare:)];
NSMutableArray *sortedPackages = [[NSMutableArray alloc]initWithArray:[packages sortedArrayUsingDescriptors:@[sortDescriptor]]];

lastRoute는 하나의 개체이며 이 개체는 to 개체를 유지하고, 이 개체는 성 문자열 값을 유지합니다.

빠른 버전: 5.1

사용자 정의 구조자 클래스가 있고 임의로 정렬하려면 지정한 필드에서 정렬하는 후행 마감을 사용하여 정렬()을 호출해야 합니다.다음은 특정 속성을 정렬하는 사용자 지정 구조체 배열을 사용하는 예제입니다.

    struct User {
        var firstName: String
    }

    var users = [
        User(firstName: "Jemima"),
        User(firstName: "Peter"),
        User(firstName: "David"),
        User(firstName: "Kelly"),
        User(firstName: "Isabella")
    ]

    users.sort {
        $0.firstName < $1.firstName
    }

배열을 제자리에서 정렬하는 대신 정렬된 배열을 반환하려면 다음과 같이 sorted()를 사용합니다.

    let sortedUsers = users.sorted {
        $0.firstName < $1.firstName
    }
  let sortedUsers = users.sorted {
    $0.firstName < $1.firstName
 }
NSMutableArray *stockHoldingCompanies = [NSMutableArray arrayWithObjects:fortune1stock,fortune2stock,fortune3stock,fortune4stock,fortune5stock,fortune6stock , nil];

NSSortDescriptor *sortOrder = [NSSortDescriptor sortDescriptorWithKey:@"companyName" ascending:NO];

[stockHoldingCompanies sortUsingDescriptors:[NSArray arrayWithObject:sortOrder]];

NSEnumerator *enumerator = [stockHoldingCompanies objectEnumerator];

ForeignStockHolding *stockHoldingCompany;

NSLog(@"Fortune 6 companies sorted by Company Name");

    while (stockHoldingCompany = [enumerator nextObject]) {
        NSLog(@"===============================");
        NSLog(@"CompanyName:%@",stockHoldingCompany.companyName);
        NSLog(@"Purchase Share Price:%.2f",stockHoldingCompany.purchaseSharePrice);
        NSLog(@"Current Share Price: %.2f",stockHoldingCompany.currentSharePrice);
        NSLog(@"Number of Shares: %i",stockHoldingCompany.numberOfShares);
        NSLog(@"Cost in Dollars: %.2f",[stockHoldingCompany costInDollars]);
        NSLog(@"Value in Dollars : %.2f",[stockHoldingCompany valueInDollars]);
    }
    NSLog(@"===============================");

언급URL : https://stackoverflow.com/questions/805547/how-do-i-sort-an-nsmutablearray-with-custom-objects-in-it

반응형