我已经使用iOS默认代码在自定义词典对象中搜索字符串,该对象存在于字典项的均值数组中。
contactform.blade.php
当我使用少于256个对象的相同代码时,代码正常工作而不会崩溃,NSRange searchRange = NSMakeRange(0, artistThumbnail.count);
index = [artistThumbnail indexOfObject:artist
inSortedRange:searchRange
options:NSBinarySearchingLastEqual
usingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {
NSString *artistName = (NSString *)obj2;
NSDictionary *artistThumbnail = (NSDictionary *)obj1;
NSString *artistToCompare = artistThumbnail[_artist_thumb];
NSComparisonResult result = [artistToCompare compare:artistName];
return result;
}];
和Obj1
都具有字典对象,但是当数组具有> 256个项目时,它崩溃并且我'已经注意到obj1和obj2与以前的不一样,总是以Obj2
格式出现。
答案 0 :(得分:1)
问题是比较对象的类型与数组元素的类型不同。如果您以context
的形式正确键入数组,则会收到一条警告,提示参数NSArray<NSDictionary *> *
的类型应为indexOfObject
。
此外,您不能依靠NSDictionary *
对象始终作为artist
传递给比较函数。该文档没有对此进行任何说明,因此您应该假定它有时可以obj2
的形式传递,而有时可以obj1
的形式传递。
要解决该问题,您可以将obj2
嵌入字典中,使其与artist
这样的数组元素具有相同的格式。然后您以相同的方式从两个参数中检索名称。
@{ _artist_thumb: artist }