Я пытаюсь создать массив из компонентов пути к файлу. У меня есть массив путей к файлам (как NSStrings) и я перекручивание через них, а затем ломать каждый вниз, как так:Objective-C: Создание NSArray из NSString
//get the array of image paths
imageList = [[notification userInfo] objectForKey:@"images"];
//loop through the array and get the image names
for (NSString* thisImagePath in imageList) {
NSArray* thisImagePathArray = [thisImagePath componentsSeparatedByString:@"/"];
Половину времени моя программа врезаться здесь. Появляется следующее сообщение об ошибке:
-[NSCFArray componentsSeparatedByString:]: unrecognized selector sent to instance 0x1a7940
imageList - это массив файлов, упавших на представление. Поскольку эта проблема возникла, я просто отбрасываю только один файл за раз. Например:
Этот файл не работает:
/Users/steve/Desktop/thinkstock/PT121211_PI_bariatric.tif
Это сделал
/Users/steve/Desktop/thinkstock/Studentexhausted82557038.jpg
так, если я понимаю, сообщение об ошибке правильно, я пытаюсь применить селектор componentsSeparatedByString к NSArray, который не поддерживает этот селектор. Но в моем цикле я призываю NSString, если объект был массивом, я не должен рушиться там? (И я на 99% уверен, что объект с индексом 0 из imageList является строкой.)
Моя цель - получить имя файла из пути к файлу, есть ли лучший способ сделать это, чем подход, который я принимаю ?
Когда я пошагово (поставив точку отладки в componentsSeparatedByString линии это, кажется, работает, как я планировал:
Но если я ударил продолжать это врезается
Как предположил я изменился. мой код для регистрации данных:
//loop through the array and get the image names
for (NSString* thisImagePath in imageList) {
if (![thisImagePath isKindOfClass:[NSString class]]) {
NSLog(@"The class of this object is: %@", [thisImagePath className]);
}
NSLog(@"%@", thisImagePath);
NSArray* thisImagePathArray = [thisImagePath componentsSeparatedByString:@"/"];
NSString* thisImageName = [thisImagePathArray objectAtIndex:[thisImagePathArray count]-1];
Условное условие для проверки класса никогда не запускается, поскольку все из N Класс SString. Однако некоторые файлы работают, некоторые из них не ...
2012-01-19 13:59:04.631 archiveDrop_cocoa[76758:10b] /Users/steve/Desktop/thinkstock/rbrb_0556.jpg
2012-01-19 13:59:06.799 archiveDrop_cocoa[76758:10b] /Users/steve/Desktop/thinkstock/Manracefinish78464007.jpg
2012-01-19 13:59:08.319 archiveDrop_cocoa[76758:10b] /Users/steve/Desktop/thinkstock/ManLabtop86510699.jpg
2012-01-19 13:59:08.320 archiveDrop_cocoa[76758:10b] *** -[NSCFArray componentsSeparatedByString:]: unrecognized selector sent to instance 0x1a75c0
2012-01-19 13:59:08.321 archiveDrop_cocoa[76758:10b] *** Canceling drag because exception 'NSInvalidArgumentException' (reason '*** -[NSCFArray componentsSeparatedByString:]: unrecognized selector sent to instance 0x1a75c0') was raised during a dragging session
2012-01-19 13:59:10.726 archiveDrop_cocoa[76758:10b] /Users/steve/Desktop/thinkstock/LasVegassign78058995.jpg
2012-01-19 13:59:10.728 archiveDrop_cocoa[76758:10b] *** -[NSCFArray componentsSeparatedByString:]: unrecognized selector sent to instance 0x1a9010
2012-01-19 13:59:10.729 archiveDrop_cocoa[76758:10b] *** Canceling drag because exception 'NSInvalidArgumentException' (reason '*** -[NSCFArray componentsSeparatedByString:]: unrecognized selector sent to instance 0x1a9010') was raised during a dragging session
2012-01-19 13:59:13.342 archiveDrop_cocoa[76758:10b] /Users/steve/Desktop/thinkstock/kidscolor57448860.jpg
2012-01-19 13:59:15.014 archiveDrop_cocoa[76758:10b] /Users/steve/Desktop/thinkstock/IVDrip76801701.jpg
2012-01-19 13:59:18.263 archiveDrop_cocoa[76758:10b] /Users/steve/Desktop/thinkstock/stk26719pin.jpg
2012-01-19 13:59:23.414 archiveDrop_cocoa[76758:10b] /Users/steve/Desktop/thinkstock/WomanLabtop78634274.jpg
Когда вы нарушите в отладчике на строке, в которой вы звоните 'componentsSeparatedByString:', что делает отладчик сказать 'thisImagePath'? – user1118321
Подсказка: NSLog thisImagePath перед попыткой применить к нему компонентыSeparatedByString. –
@HotLicks - У меня есть эти два пути, которые я отправил, прямо из журнала. – PruitIgoe