应用程序在模拟器上工作,但不在iPad上
问题描述:
我目前正在编写一个应用程序,它使用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"]];
答
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
的一些代码显示的代码加载plist。听起来像一个文件名大小写问题。该设备区分大小写。 – Anna
我的一个应用程序完全按照您描述的方式工作,没有任何问题。确认您正在阅读plists并获得您的预期。 – progrmr
这是plist加载的问题。请记住,在设备上,您必须将文件保存在文档目录中。 – 0xSina