我正在努力获取按艺术家排序的歌曲列表。我的代码工作正常,可以打印歌曲和艺术家。现在我想按艺术家对列表进行排序和打印。这是我第一次尝试排序,我知道我必须在这里找到一些简单的东西。我得到 - 期待')' - 和 - 使用未声明的标识符'listSongs' - 这都在我的@implementation文件中。
感谢您的任何帮助。
这是我的界面部分
@interface Library : NSObject
@property (nonatomic, strong) NSMutableArray *list;
-(id) initList;
-(void) addSong: (Song *) song;
-(void) listSongs;
@end
这是我的实施部分
#import "Library.h"
@implementation Library
@synthesize list;
-(id) initList
{
self = [super init];
if (self){
list = [NSMutableArray array];
}
return self;
}
-(id) init
{
return [self initList];
}
-(void) addSong:(Song *)song
{
[list addObject: song];
}
-(void) listSongs
{
NSLog(@"The list of my songs");
NSSortDescriptor *sorter;
sorter = [[[NSSortDescriptor alloc] initWithKey:@"artist" ascending: YES]
NSArray *sortDescriptors = [NSArray arrayWithObjects:sorter]; **// ** Expected ')'**
[listSongs sortUsingDescriptors:sortDescriptors]; //**use of undeclared identifier 'listSongs'
for (Song *song in list)
NSLog(@"%-20s by %s", [song.Title UTF8String], [song.Artist UTF8String]);
}
答案 0 :(得分:1)
你应该使用NSArray * sortedArray = [listSongs arraySortedUsingDescriptors:sortDescriptors];
基本上这个方法返回一个有序数组,它在一个未排序的数组上调用,并给出一个排序描述符数组。
答案 1 :(得分:0)
正如我从您的代码中理解的那样,您要做的是对list
进行排序,并将其声明为属性。
您需要替换此行
[listSongs sortUsingDescriptors:sortDescriptors];
使用
self.list = [self.list sortUsingDescriptors:sortDescriptors];