stringByAppendingPathComponent及他的删除函数 等系列函数

本文详细介绍了NSString类中关于路径操作的方法,包括添加路径组件、删除最后一个路径组件、添加路径扩展名及删除路径扩展名等。通过实例展示了这些方法的具体应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

- (NSString *)stringByAppendingPathComponent:(NSString *)aString


aString is “scratch.tiff”:

Receiver’s String Value

Resulting String

/tmp

/tmp/scratch.tiff

/tmp/

/tmp/scratch.tiff

/

/scratch.tiff

“” (an empty string)

scratch.tiff

- (NSString *)stringByDeletingLastPathComponent

Receiver’s String Value

Resulting String

/tmp/scratch.tiff

/tmp

/tmp/lock/

/tmp

/tmp/

/

/tmp

/

/

/

scratch.tiff

“” (an empty string)


- (NSString *)stringByAppendingPathExtension:(NSString *)ext
ext is "tiff"

Receiver’s String Value

Resulting String

/tmp/scratch.old

/tmp/scratch.old.tiff

/tmp/scratch.

/tmp/scratch..tiff

/tmp/

/tmp.tiff

scratch

scratch.tiff

- (NSString *)stringByDeletingPathExtension

Receiver’s String Value

Resulting String

/tmp/scratch.tiff

/tmp/scratch

/tmp/

/tmp

scratch.bundle/

scratch

scratch..tiff

scratch.

.tiff

.tiff

/

/


- (NSString *)stringByAppendingString:(NSString *)aString
aString

The string to append to the receiver. This value must not be nil.

NSString *errorTag = @"Error: ";
NSString *errorString = @"premature end of file.";
NSString *errorMessage = [errorTag stringByAppendingString:errorString];

produces the string “Error: premature end of file.”.

除了使用NSBundle的pathForResource:ofType:方法之外,还有其他几种方法可以在Objective-C中通过类名获取文件名。 1. 使用NSString的方法stringByAppendingString:将类名与文件类型拼接起来,然后使用NSFileManager的方法fileExistsAtPath:判断文件是否存在。 ``` NSString *className = NSStringFromClass([MyClass class]); NSString *filePath = [[NSBundle mainBundle] resourcePath]; NSString *fileName = [className stringByAppendingString:@".m"]; NSString *fullPath = [filePath stringByAppendingPathComponent:fileName]; if ([[NSFileManager defaultManager] fileExistsAtPath:fullPath]) { // 文件存在 } ``` 在这个示例中,我们首先获取类名,然后使用NSBundle的resourcePath方法获取资源路径,然后将类名与文件类型拼接起来,得到完整的文件名。最后,使用NSFileManager的fileExistsAtPath方法判断文件是否存在。 2. 使用C函数objc_getClass和class_getName获取类名,然后使用C函数dlopen和dlsym获取文件名。 ``` #include <dlfcn.h> #import <objc/runtime.h> Class class = objc_getClass("MyClass"); const char *className = class_getName(class); void *handle = dlopen(NULL, RTLD_NOW); const char *fileName = dlsym(handle, className); ``` 在这个示例中,我们首先使用objc_getClass和class_getName函数获取类名,然后使用dlopen和dlsym函数获取文件名。需要注意的是,dlopen和dlsym函数需要传入正确的动态链接库文件路径,否则会出现错误。 总的来说,虽然可以使用多种方法在Objective-C中通过类名获取文件名,但是使用NSBundle的pathForResource:ofType:方法是最常用的方法,也是最简单的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值