0
當我運行我的應用程序時,無法執行數據庫操作。當我檢查iphone模擬器的文件目錄時,它不包含數據庫文件。這裏是我的代碼數據庫文件未複製到文檔目錄中
-(id)init
{
[super init];
[email protected]"DSMDatabase.sqlite";
NSArray * documentsPaths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString * documentDir=[documentsPaths objectAtIndex:0];
databasePath=[documentDir stringByAppendingPathComponent:databaseName];
return self;
}
-(void)checkAndCopyDB
{
BOOL success;
NSFileManager * fileManager=[NSFileManager defaultManager];
success=[fileManager fileExistsAtPath:databasePath];
if(success) return;
NSString * databasepathfromapp=[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:databaseName];
[fileManager copyItemAtPath:databasepathfromapp toPath:databasePath error:nil];
[fileManager release];
}
所以你的意思是說,我有所有的代碼由init到checkAndCopy方法轉移,所以會有保留databasePath的問題。是嗎?無論如何謝謝 – iOSAppDev 2011-03-24 17:02:51
除了調用[super init]和「return self」之外的所有代碼都可以移入checkAndCopyDB。那麼在那個方法中就不會有任何記憶問題。如果您在此方法之外的任何地方使用「databasePath」,則可能仍需要保留它。 – 2011-03-24 20:00:31