2016-03-10 87 views
2

我解决在使用-[NSString isEqualToString:]比较NSString的两个文件路径包括链接

(lldb) po aString 
/var/mobile/Containers/Bundle/Application/DE14BC26-B07D-46C2-89BF-E800231BAD1F/a.app/b.bundle/epub/OEBPS/Text/02.xhtml 

(lldb) po bString 
/private/var/mobile/Containers/Bundle/Application/DE14BC26-B07D-46C2-89BF-E800231BAD1F/a.app/b.bundle/epub/OEBPS/Text/02.xhtml 

[aString isEqualToString:bString]会产生NO引起的路径比较的错误。

但是由于/ var是/ private/var的符号链接,它们指的是同一个文件。我可否知道解决此问题的正确方法?

+0

我以'/ private/var'开头,另一个是'/ var',即使看起来也不一样 –

+0

var是符号链接private/var –

+0

我知道,但记住它们是'NSString'对象,所以他们被比作字符串和作为对象他们是不一样的。 –

回答

2

尝试使用:

NSString *resolvedPath = [path stringByResolvingSymlinksInPath]; 

然后进行比较。见NSString Class Reference

对于NSURL equalvent,用途:

NSURL *resolvedURL = [url URLByResolvingSymlinksInPath]; 

NSURL Class Reference

+0

如果他们是NSURL,那么该怎么办? –

+0

然后你使用'NSURL'的'URLByResolvingSymlinksInPath'。或者在比较之前将'NSURL'转换为'NSString'路径。 –

+0

我在这个分类文件中找到了我需要的东西:https://github.com/DigitalLeaves/NSURLEquality/blob/master/NSURLTest/NSURL%2BRealEquality.m –