[英]Terminating app - 'NSInvalidArgumentException', reason: '-[NSCFString objectForKey:]: unrecognized selector sent to instance
[英]iOS: 'NSInvalidArgumentException', reason: '-[__NSCFString sortedArrayUsingFunction:context:]: unrecognized selector sent to instance.
嘗試獲取前10組鍵時出現以下崩潰信息。 這是引起問題的代碼。
for (int i = 0; i < 10; i++) {
sortedArray = [ [answers allKeys][i] sortedArrayUsingFunction:sort context:nil];
}
但是,當我僅使用此sortedArray = [ [answers allKeys] sortedArrayUsingFunction:sort context:nil];
我沒有崩潰。 有人可以幫我找出解決方法嗎? 我只想要前10個鍵。
我只是在這里猜測,但我認為您想要這個。
NSArray *arr = [[answers allKeys] subarrayWithRange:NSMakeRange(0, 10)];
NSArray *sorted = [arr sortedArrayUsingFunction:sort context:nil];
不幸的是,這行不通,您將需要更改架構。 這就是為什么。
字典是無序的。 這意味着, allKeys
可以在任何時候以任何順序返回。 尤其是在迭代的地方使用它的方式,這不太可能,但是有可能您將擁有一個由所有相同鍵填充的數組。 如果使用我上面提供的代碼,您將獲得10個鍵的排序數組。 盡管這些鍵是唯一的,但它們不會以任何順序確定,並且應假定是隨機的。
也許您需要在過濾掉數組之前對鍵進行排序? 可能看起來像這樣:
NSArray *sorted = [[answers allKeys] sortedArrayUsingFunction:sort context:nil];
NSArray *filtered = [sorted subarrayWithRange:NSMakeRange(0, 10)];
由於[answers allkeys][i]
返回NSString,您將崩潰。
也許您想要做的事情可以像這樣完成:
NSArray* sortedArray = [[answers allKeys] sortedArrayUsingFunction:sort context:nil];
NSArray* sorted1st10 = [sortedArray subarrayWithRange:NSMakeRange(0, 10)];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.