2012-02-27 96 views
-1

我試圖修改它,看看這裏的其他選項和谷歌搜索一些東西,但似乎沒有任何工作。NSKeyedArchiver工作在模擬器,但不是設備,iOS SDK

這就是我所擁有的,就像我說的那樣,它在模擬器中完美工作,但不是設備,女巫運行iOS 5.x 我感謝所有的幫助。

NSFileManager *filemgr; 
    NSString *docsDir; 
    NSArray *dirPaths; 

    filemgr = [NSFileManager defaultManager]; 

    // Get the documents directory 
    dirPaths = NSSearchPathForDirectoriesInDomains(
               NSDocumentDirectory, NSUserDomainMask, YES); 

    docsDir = [dirPaths objectAtIndex:0]; 

    //Build the path to the data file 
    datafilePath = [[NSString alloc] initWithString: [docsDir 
               stringByAppendingPathComponent: @"data.archive"]]; 
    // NSString *localPath = @"Documents/data.archive"; 
    // datafilePath = [NSHomeDirectory() stringByAppendingPathComponent:localPath]; 

    // Check if the file already exists 
    if ([filemgr fileExistsAtPath: datafilePath]) 
    { 
    NSMutableArray *dataArray; 
    // NSDictionary *stuff; 

    dataArray = [NSKeyedUnarchiver 
       unarchiveObjectWithFile: datafilePath]; 


    for(int i=0; i< [dataArray count]; i++){ 
    titlestring = [dataArray objectAtIndex:i ]; 
    detailsstring = [dataArray objectAtIndex:++i]; 

    // date = [dataArray objectAtIndex:2]; 


     [tabledata addObject:titlestring]; 
    [tablesubtitles addObject:detailsstring]; 

    } 

    } 





    } 

這是saveButton行動: 就像我說的,我在模擬器上工作得很好,只是沒有做到在任何設備,一切都顯示空白。

if (i == 0) { 

    // [userDefaults setObject:titlefield.text forKey: @"titlehomework"]; 
    // [userDefaults setObject:detailstextfield.text forKey:@"detailshomework"]; 

    NSMutableArray *contactArray; 
    contactArray = [NSKeyedUnarchiver 
     unarchiveObjectWithFile: datafilePath]; 

    // contactArray = [[NSMutableArray alloc] init]; 
    [contactArray addObject:titlefield.text]; 
    [contactArray addObject:detailstextfield.text]; 

    [NSKeyedArchiver archiveRootObject: 
    contactArray toFile:datafilePath]; 

    // NSDictionary *stuff; 



    } 
+0

如果你確切地描述*什麼*不起作用,這將是有幫助的。告訴我們你認爲應該發生什麼,實際發生了什麼,以及到目前爲止你已經嘗試了什麼。 – Caleb 2012-02-27 01:14:51

+0

編碼代碼也是有幫助的。 – fbernardo 2012-02-27 01:30:08

+0

好吧,我想我不創建文件,datafilePath也創建文件?將盡快編輯,但這基本上是我所有,我應該在委託中創建文件? – franklinexpress 2012-02-27 01:40:36

回答

0

這是很難回答不知道什麼是失敗的問題,但它可以幫助你知道,很多時候,當人們獲得工作在模擬器上的代碼,但無法在設備上,該問題是文件名相關。 iOS中的文件系統區分大小寫,但MacOS X文件系統通常不區分大小寫。因此,如果您嘗試讀取名爲「data.archive」的文件,但實際文件的名稱是「Data.archive」,則它將在模擬器上工作,但不在設備上。

+0

的權利,但我在代碼中創建文件,手機會自動大寫文件名? – franklinexpress 2012-02-27 01:28:46

+1

Caleb的含義是,如果將文件另存爲data.archive並將其作爲Data.archive讀取,它將在模擬器中工作,但不在實際設備上。 – 2012-05-25 15:36:04

相關問題