2012-02-27 5 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

+0

Кодирующий код также будет полезен. – fbernardo

+0

Хорошо, я думаю, что я не создаю файл, не создает ли файл datafilePath файл? Будет ли редактировать asap, но это в основном все, что у меня есть, я должен создать файл в делегате? – franklinexpress

ответ

0

Трудно ответить на этот вопрос, не зная, что не удается, но это может помочь вам знать, что очень часто, когда люди получают код работает на тренажере, но не на устройстве, проблема связана с именами файлов. Файловая система в iOS чувствительна к регистру, но файловая система MacOS X часто не чувствительна к регистру. Поэтому, если вы пытаетесь прочитать файл с именем «data.archive», но имя фактического файла «Data.archive», оно будет работать на симуляторе, но не на устройстве.

+0

правильно, но я создаю файл в коде, будет ли телефон автоматически использовать имя файла? – franklinexpress

+1

Что означает Caleb, так это то, что если вы сохраните файл как data.archive и прочитаете его как Data.archive, он будет работать в симуляторе, но не на самом устройстве. –

Смежные вопросы