NSKeyedArchiver在Simulator中工作但不是Device,iOS SDK

时间:2012-02-27 00:39:30

标签: objective-c ios save nskeyedarchiver

我尝试稍微修改它并在这里查看其他选项并搜索一些东西,但似乎没有任何效果。

这就是我所拥有的,就像我说的,它在模拟器中完美运行但不是设备,运行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;



    }

1 个答案:

答案 0 :(得分:0)

在不知道失败的情况下很难回答这个问题,但是当人们让代码在模拟器上工作而不是在设备上工作时,它可能会帮助你知道,问题与文件名有关。 iOS中的文件系统区分大小写,但MacOS X文件系统通常不区分大小写。因此,如果您尝试读取名为“data.archive”的文件,但实际文件的名称为“Data.archive”,则它将在模拟器上运行,但不在设备上运行。