Изменен порядок значений NSArray ipad vs simulator?

В симуляторе я получу файлы obj из пакета:

NSArray *myArray = [[NSBundle mainBundle] pathsForResourcesOfType:@"obj" inDirectory:nil];

В симуляторе obj файлы печатаются в алфавитном порядке:

/Users/name/Library/Application Support/iPhone Simulator/6.0/Applications/10FF2D60-7B33-4AE9-9CA2-95A951A55C49/3DModels.app/**banana.obj**,

/Users/name/Library/Application Support/iPhone Simulator/6.0/Applications/10FF2D60-7B33-4AE9-9CA2-95A951A55C49/3DModels.app/**plane3.obj**,

/Users/name/Library/Application Support/iPhone Simulator/6.0/Applications/10FF2D60-7B33-4AE9-9CA2-95A951A55C49/3DModels.app/**wolverine.obj**,

/Users/name/Library/Application Support/iPhone Simulator/6.0/Applications/10FF2D60-7B33-4AE9-9CA2-95A951A55C49/3DModels.app/**Wteapot.obj**,

/Users/name/Library/Application Support/iPhone Simulator/6.0/Applications/10FF2D60-7B33-4AE9-9CA2-95A951A55C49/3DModels.app/**XBODY.obj**,

/Users/name/Library/Application Support/iPhone Simulator/6.0/Applications/10FF2D60-7B33-4AE9-9CA2-95A951A55C49/3DModels.app/**YLID.obj**
)

Но ipad и obj файлы не печатаются в алфавитном порядке.

/Users/name/Library/Application Support/iPhone Simulator/6.0/Applications/10FF2D60-7B33-4AE9-9CA2-95A951A55C49/3DModels.app/**wolverine.obj,**

/Users/name/Library/Application Support/iPhone Simulator/6.0/Applications/10FF2D60-7B33-4AE9-9CA2-95A951A55C49/3DModels.app**/**Wteapot.obj**,**

/Users/name/Library/Application Support/iPhone Simulator/6.0/Applications/10FF2D60-7B33-4AE9-9CA2-95A951A55C49/3DModels.app/**plane3.obj**,

В чем проблема?

2 ответа

Решение

Я думаю, что некоторые из начальных символов имени вашего obj файла написаны заглавными буквами. просто измените эти имена файлов, начиная с маленькой буквы.

Apple, документ pathsForResourcesOfType: inDirectory: говорит, что:

Массив, содержащий полные пути для всех ресурсов пакета, соответствующих заданным критериям. Этот метод возвращает пустой массив, если не найдено подходящих файлов ресурсов.

Это означает, что Apple не говорит, что это даст вам путь в каком-то определенном порядке, но если вам нужно это в каком-то порядке, вы можете отсортировать сами.

NSArray *sorted = [myArray sortedArrayUsingComparator:^NSComparisonResult(NSString *str1, NSString *str2) 
{
    return [s1 localizedCaseInsensitiveCompare:s2];
}];

Итак, теперь вы отсортировали NSArray всех путей.

Другие вопросы по тегам