Objective c 使用NSSortDescriptor对NSDictionary的NSArray进行排序不工作
我有一个数组Objective c 使用NSSortDescriptor对NSDictionary的NSArray进行排序不工作,objective-c,sorting,Objective C,Sorting,我有一个数组unsortedPosts充满了字典,如果我在终端中打印出内容,看起来是这样的: { "created_at" = 1332584959; id = "61926802418418"; network = "net1"; text = "text1"; url = "https://www.google.com"; }, { "created_at" = 1332581096; id = "6192689218418";
unsortedPosts
充满了字典,如果我在终端中打印出内容,看起来是这样的:
{
"created_at" = 1332584959;
id = "61926802418418";
network = "net1";
text = "text1";
url = "https://www.google.com";
},
{
"created_at" = 1332581096;
id = "6192689218418";
network = "net1";
text = "text1";
url = "https://www.yahoo.com";
},
{
"created_at" = 1332581074;
id = "6192688628418";
network = "net1";
text = "text1";
url = "https://www.aol.com";
}
我想按照在字段(unix时间戳)创建的对它们进行排序。我正在使用NSSortDescriptor,如下所示:
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"\"created_at\"" ascending:TRUE];
NSMutableArray *sortDescriptors = [NSMutableArray arrayWithObject:sortDescriptor];
NSArray *sortedSocialPosts;
sortedSocialPosts = [unsortedSocialPosts sortedArrayUsingDescriptors:sortDescriptors];
但是输出没有排序
编辑
我尝试运行它,但没有使用在
创建的周围的转义引号(根据@Eimantas答案):
但我得到了这个错误:
-[__NSCFNumber length]: unrecognized selector sent to instance 0x6a2a3c0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber length]: unrecognized selector sent to instance 0x6a2a3c0'
您不需要转义引号,只需在“
处传入@”created\u,您就会很好。执行NSLog()
调用时,有时会打印引号。我很确定,您实际上可以通过使用valueForKey:
方法访问@“created_at”
键来访问创建时间戳
更新
这可能意味着在
处创建的一些值可能是NSString实例和一些-NSNumber
实例。您能否确认所有创建的_at值都属于同一类型?(使用NSLog(@“%@”,[[unsortedSocialPosts valueForKey:@“created_at”]valueForKey:@“class”);
您不需要转义引号,只需在“处传入@“created_”,您就可以了。有时候在执行NSLog()时会打印引号
调用。我非常确定,您只需使用valueForKey:
方法访问@“created_at”
键,就可以访问创建时间戳
更新
这可能意味着在
处创建的一些值可能是NSString
实例和一些-NSNumber
实例。您能否确认所有在
处创建的值都是同一类型的?(使用NSLog(@“%@,[[unsortedSocialPosts valueForKey:@“created”at“]valueForKey:@“class]”)
如果数组是用NSLog()打印的
在处创建的周围的引号只是它打印内容方式的产物-很可能是因为下划线。如果数组是用NSLog()打印的
在
上创建的周围的引号只是它打印东西的方式的产物-很可能是因为下划线。
-[__NSCFNumber length]: unrecognized selector sent to instance 0x6a2a3c0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber length]: unrecognized selector sent to instance 0x6a2a3c0'