2011-09-07 287 views
1

我目前正在編寫一個應用程序,它使用Core圖形在屏幕上移動對象。一旦物體被移動,它將它們的位置保存在plist中。在加載時,它會從plist中加載對象的位置。如果由於某種原因沒有plist或無法從plist加載數據,它會加載默認位置。它可以在模擬器中正常工作,但是在iPad上運行時,它會繼續加載默認設置,儘管plists存在。我通過iTunes下載了plists,他們已經更新,但由於某些原因,它不會讀取它們?有沒有其他人與plists有類似的問題?應用程序在模擬器上工作,但不在iPad上

NSString *error = [[[NSString alloc]init]autorelease]; 

NSPropertyListFormat format; 

NSString *plistName = [[[NSString alloc] initWithFormat:@"nameOfObject%d", [delegate plistSelected]]autorelease]; 



NSString *plistPath = [[[NSString alloc] init]autorelease]; 
plistPath = [[NSBundle mainBundle] pathForResource:plistName ofType:@"plist"]; 

    NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:plistPath]; 


NSDictionary *plistData = (NSDictionary *)[NSPropertyListSerialization propertyListFromData:plistXML mutabilityOption:NSPropertyListMutableContainersAndLeaves format:&format errorDescription:&error]; 

if(! plistData){ 

    NSLog(@"error reading the plist: %@ format:%d", error, format); 
} 

NSArray *arrayOfDictonarys = [[NSArray alloc] initWithArray:[plistData objectForKey:@"DicName"]]; 
+1

的一些代碼顯示的代碼加載plist。聽起來像一個文件名大小寫問題。該設備區分大小寫。 – Anna

+0

我的一個應用程序完全按照您描述的方式工作,沒有任何問題。確認您正在閱讀plists並獲得您的預期。 – progrmr

+2

這是plist加載的問題。請記住,在設備上,您必須將文件保存在文檔目錄中。 – 0xSina

回答

3

PragamOnce被發現是錯誤的目錄。我不知道這是爲什麼,但它是。我得到了我的大學其糾正錯誤

+(NSString*) pathToDocumentsFolder 
{ 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
return documentsDirectory; 
} 
+(NSString*) pathToFileInDocumentsFolder:(NSString*)filename 
{ 
NSString *pathToDoc = [NSBundle pathToDocumentsFolder]; 
return [pathToDoc stringByAppendingPathComponent:filename]; 
} 

一旦我實現了這個代碼,它的工作沒有問題

感謝您的幫助

傑克

+0

你在ViewController中編寫了這個方法嗎?我在保存和加載聲音文件時遇到了類似的問題。提前致謝。 – andres83

相關問題