我开始用这里推荐的书(Objective-c编程)学习Objective-C,我有两个问题:
例如在复制文件的方法中:
NSString *path, newPath;
NSFilemanager;
if([fm copyItemToPath: path toPath newPath error: NULL] == NO)
{
MSLOG(@"The file does not exist");
}
答案 0 :(得分:4)
NO
是copyItemToPath
方法的返回值。如果文件复制操作不成功,则返回NO
(与false
相同)。
错误的NULL
表示在这种情况下返回的错误并不重要,可以忽略。否则,您将指针传递给NSError
对象:
NSError *error;
if([fm copyItemToPath: path toPath newPath error: &error] == NO) {
NSLog(@"Error is %@", [error.localizedDescription]);
....
错误消息返回函数返回值为false
的原因。
答案 1 :(得分:1)
首先需要清理代码:NSString
的两个声明都是指针,你需要为NSFileManager
声明一个变量指针,你的方法缺少一个:
,并且if
文字应为NSLog
所以我们有:
NSString *path, *newPath;
NSFilemanager *fm;
if([fm copyItemToPath: path toPath: newPath error: NULL] == NO)
{
NSLog(@"The file does not exist");
}
NULL
的{{1}}是默认操作,如果代码成功,err
为BOOL
,如果失败则为YES
。
NO
是返回值的自动防故障。因为有时它是==NO
或1
或0
或true
,这可能会导致错误。