我讀了5個其他相關的questions具有相同的錯誤或syntax。據我所知,沒有任何事情與我的問題有關。不允許將非Objective-C指針類型「SEL」隱式轉換爲「NSString * _Nonnull」ARC
-(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
您可能需要閱讀此:https://developer.apple.com/library/mac/documentation/General/Conceptual/DevPedia -CocoaCore/Selector.html – jtbandes
看起來你不知道選擇器是什麼,並且可能對函數的理解很少,以及如何調用它們。也許一個好的Objective-C引擎是有序的。 – Avi
@ asma22注意Objective-C中的方法不應該以'get'作爲前綴,除非它們遵循一個通過參數通過引用返回的特定模式。 (共同點的困惑 - 歡迎來到這個語言,玩得開心!)。 – bbum