我有几行代码可以截断包含目录路径的字符串的前6个字符。如果存储在sourcePathString中的目录路径是“ file:/// Users / username / Desktop”,那么此代码不应该将subString设置为“ / Users / username / Desktop”吗?由于某种原因,它将被设置为“ / Users / u”,这意味着stringSize被设置为8。无论目录路径有多长,都会发生这种情况。
NSString *sourcePathString = [sourceURL absoluteString];
int stringSize = sizeof(sourcePathString);
NSString *subString = [sourcePathString substringWithRange:NSMakeRange(7,stringSize)];
我知道字符串sourcePathString包含整个目录路径,因为我尝试将其内容直接放入文本字段中。
我是可可的新手,所以我很可能错过了一些明显的事情。
最佳答案
在这种情况下,sizeof()
将返回指向对象string
的指针的大小。在64位系统上,这是8个字节。
您要使用int stringSize = [string length]
或更具体:您可以针对NSRangeCall
对其进行调整
NSString *subString = [sourcePathString substringWithRange:NSMakeRange(7,[string length] - 8)];
因为它不是从一开始就开始的。
关于cocoa - cocoa sizeof(string)总是返回8,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24146138/