2016-01-03 2 views
0

Следующий фрагмент создает список отладчика, который следует за ним. Тем не менее, если строка 2 заменяет строку 1, ошибки не возникает. LineTwo был получен путем копирования и вставки вывода отладчика из предыдущего запуска. Вы можете мне это объяснить?Ошибка преобразования NSString в NSURL

//LINE ONE 
NSString* aString = self.urlText; 
NSLog(@"aString: %@",aString); 
//LINE TWO 
//NSString* aString = @"file:///Users/oldmancoyote1/Documents/A%20REFERENCE%20SYSTEM/C/Computers/iOS/C%20and%20Obj.%20C/C%20Language/1-4.6.html"; 
NSURL* testURL = [NSURL fileURLWithPath:aString]; 

2016-01-03 12: 44: 30,307 webScrol [1505: 62452] aString: Файл: /// Пользователи/oldmancoyote1/Документы/A% 20REFERENCE% 20SYSTEM/C/Компьютеры/IOS/C% 20and% 20Obj% 20C/C% 20Language/1-4.6.html

2016-01-03 12: 44: 30,307 webScrol [1505: +62452] - [длина NSURL]:. непризнанная селектор послан к экземпляру 0x6080000a4800

2016-01-03 12: 44: 30.307 webScrol [1505: 62452] Не удалось установить (contentViewController) определяемое пользователем свойство проверки (NSWindow): - [длина NSURL]: непризнанный селектор, отправленный в экземпляр 0x6080000a4800

+1

Мое ближайшее предположение: 'self.urlText' на самом деле не является' NSString', а скорее 'NSURL', и когда вы передаете его в' [NSURL fileURLWithPath:] ', этот метод пытается рассматривать его как 'NSString' (например, путем вызова' length' на нем), вызывающего сбой. – jbg

+0

Можете ли вы дать определение 'self.urlText'? Есть ли у него тип 'id'? – jbg

+0

@property NSString * urlText; Значение urlText изначально было определено как NSString *, архивировано и unarchived с использованием encodeObject: forKey: и decodeObjectForKey: Я думаю, что я проверил все это. Без сомнения, я допустил ошибку, но я не могу ее найти! –

ответ

1

aString фактически является объектом NSURL, несмотря на то, что он хранится в переменной NSString. Это должно было произойти в более раннем коде, чем то, что вы предоставили.

Когда он передан в [NSURL fileURLWithPath:], эта функция пытается обработать его как NSString, вызвав его метод length и программа выйдет из строя.

Смежные вопросы