我有几行代码可以截断包含目录路径的字符串的前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/

10-13 04:38