这个问题在这里已有答案:
我读了5个其他相关的questions有相同的错误或syntax。据我所知,非有任何与我的问题有关的事情。
-(void) createCopyOfDBIfNeeded{
NSFileManager *fileManager= [NSFileManager defaultManager];
BOOL isDatabaseInCache = [fileManager fileExistsAtPath:@selector(getDBFile)];
if (isDatabaseInCache) {
return;
}
}
// getDBFile方法:
-(NSString *) getDBFile {
NSArray * paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString * DBPath = [paths firstObject];
NSString * DBFile = [DBPath stringByAppendingPathComponent:@"productDBFile.db"];
return DBFile;
}
似乎错误与@selector(getDBFile)
有关。如果我使用[self getDBFile]而不是一切正常,但我想了解如何以及在哪里适当地使用@selector以及错误/警告在这里意味着什么。
我也得到一个警告:Incompatible pointer types sending 'SEL' to parameter of type
编辑:这个问题基本上是What's the difference between a method and a selector?的重复
您只能将选择器传递给带选择器的方法。 fileExistsAtPath:
采取NSString *
,而不是SEL
。
看起来你想将getDBFile
的返回值传递给fileExistsAtPath:
,而不是getDBFile
的选择器。
如果是这样,只需调用getDBFile
而不是选择它的选择器:
BOOL isDatabaseInCache = [fileManager fileExistsAtPath:[self getDBFile]];