我有一个指向我的Documents文件夹的NSString路径。
NSString* stringURL = @"/var/mobile/Applications/5667FADC-F848-40CF-A309-
7BFE598AE6AB/Library/Application Support/MyAppDirectory";
当我使用
将其投放到NSUrl
时
NSURL* url = [NSURL fileURLWithPath:stringUrl];
和NSLog(@"Created URL: %@",url);
,我得到了一些奇怪的结果:
/// VAR /移动/应用/ 5667FADC-F848-40CF-A309-7BFE598AE6AB /库/应用程序㤈㤋ތȀ乽启汲唠䱒>楦敬⼺⼯庆⽲潭楢敬䄯灰楬惯楴汤⽳㘵㜶䅆䍄䘭㐸ⴸ〴䙃䄭〳ⴹ䈷䕆㤵䄸㙅䉁䰯扩慲祲䄯灰楬惯楴汤㈥匰灵溃玱䴯䅹灰楄敲琐牯⽹upport / MyAppDirectory /
为什么会这样? 我做错了什么?
答案 0 :(得分:0)
当我记录该值时,我没有看到任何中文字符。
NSString* stringURL = @"/var/mobile/Applications/5667FADC-F848-40CF-A309-7BFE598AE6AB/Library/Application Support/MyAppDirectory";
NSURL* url = [NSURL fileURLWithPath:stringURL];
NSLog(@"%@",url);
答案 1 :(得分:0)
经典错误。不要使用NSLog(url),使用NSLog(@"%@",url)。 NSLog的第一个参数是格式字符串,格式字符串中的%字符被解释,而不是打印。例如,格式字符串中的%s表示参数列表中需要另一个C-String。由于url可能包含各种字符,因此可能会导致垃圾结果甚至崩溃。
答案 2 :(得分:0)
根据您从previous question接受的答案;这是因为使用stringByAddingPercentEscapesUsingEncoding
会生成一个包含%20S
的 printf 类格式字符串(Application Support
之间的空格转换为%20
),这会让NSLog()
:
NSURL *url = [NSURL fileURLWithString:[stringURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] isDirectory:YES];
NSLog(url);
使用NSLog("@%", url)
来避免此错误。