从OS X 10.10.2和Xcode6.2升级到macOS sera10.12.2和Xcode8.2后,[[NSFileManager defaultManager] currentDirectoryPath]返回/private/tmp而不是项目目录。在Xcode 6.2中,它返回项目目录。是否有需要手动设置的设置?
问题只存在于测试目标上,我创建了一个示例项目并输出
对于实际目标,NSLog(@"currentDirectoryPath is %@",[[NSFileManager defaultManager] currentDirectoryPath]);是工作目录,但对于测试目标,它始终是/private/tmp。
发布于 2016-12-21 16:49:15
在这里(使用Xcode8),使用currentDirectoryPath()不是最好的选择。在你的测试类中,你应该使用:
[[NSBundle bundleForClass:[self class]] bundlePath];或
[[NSBundle bundleForClass:[self class]] bundleURL];这将返回一个指向捆绑包安装位置的NSString / NSURL。对于模拟器构建,路径如下:
$BUILT_PRODUCTS_DIR/$FULL_PRODUCT_NAME
了解了这一点,你就可以从你的测试包中加载资源了,例如通过
[[NSBundle bundleForClass:[self class]] pathForResource:[filename stringByDeletingPathExtension] ofType:[filename pathExtension]]https://stackoverflow.com/questions/41221138
复制相似问题