我尝试稍微修改它并在这里查看其他选项并搜索一些东西,但似乎没有任何效果。
这就是我所拥有的,就像我说的,它在模拟器中完美运行但不是设备,运行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 :(得分:0)
在不知道失败的情况下很难回答这个问题,但是当人们让代码在模拟器上工作而不是在设备上工作时,它可能会帮助你知道,问题与文件名有关。 iOS中的文件系统区分大小写,但MacOS X文件系统通常不区分大小写。因此,如果您尝试读取名为“data.archive”的文件,但实际文件的名称为“Data.archive”,则它将在模拟器上运行,但不在设备上运行。