Xcode 保存/加载数据

Posted

技术标签:

【中文标题】Xcode 保存/加载数据【英文标题】:Xcode Saving/loading data 【发布时间】:2012-11-06 14:31:34 【问题描述】:

我想为我的应用程序保存一些数据...我必须保存 3 个字符串和 3 个整数

我这样做的方式似乎不道德,并且特别在 ios 模拟器上会出错

我正在寻找一种 Apple 会批准的方式

下面的代码在第一次执行时会报错吗(例如没有文件或类似的东西)(应用程序启动后立即调用加载数据)

这是我的代码

 - (NSString *) saveFilePath
NSArray *path =
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
return [[path objectAtIndex:0] stringByAppendingPathComponent:@"savefile.plist"];
 



-(void)loadData:(int)a
NSString *myPath = [self saveFilePath];
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:myPath];    
if (fileExists)         
    NSArray *values = [[NSArray alloc] initWithContentsOfFile:myPath];        
    NSString *myString;
    myString=[NSString stringWithFormat:@"%@`s : %@ Taps",[values objectAtIndex:(a++)],[values objectAtIndex:a]];
    label.text=myString;
    hscore=[[values objectAtIndex:a] integerValue];
   
 


-(void)saveData:(int)a

NSArray *values=[[NSArray alloc] initWithObjects:@"No Game",@"0",@"No Game",@"0",@"No Game",@"0", nil];

NSString *myPath = [self saveFilePath];
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:myPath];
if (fileExists) 
    values = [[NSArray alloc] initWithContentsOfFile:myPath];
 
 // some value changing logic that works 
 [values writeToFile:myPath atomically:YES];
 

【问题讨论】:

你需要查看 Core Data 来存储。你这样做的方式将依赖于内存来加载存储的整个对象。如果只是少量数据,那应该没问题,但如果需要更复杂的查询能力和性能,Core Data 更好。 【参考方案1】:

尝试硬编码路径并测试错误的地方!

- (NSString *) saveFilePath
     
     NSString *fileName = [NSString stringWithFormat:@"Documents/savefile.plist"];
     NSString *fullFilePath = [NSHomeDirectory() stringByAppendingPathComponent:fileName];
     return fullFilePath;
 

【讨论】:

第一个断点出现在 loadData 的第一行,即“NSString *myPath = [self saveFilePath];”在输出面板中显示 lldb,在自动面板中显示变量不是 cfString .. .【参考方案2】:

我猜我的编译器有问题

我再次制作了整个 xcode 项目,复制了所有代码和 xib 文件,它现在可以工作了

干杯和感谢

【讨论】:

以上是关于Xcode 保存/加载数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode 中保存和加载图片

UITableView 重新加载 - Xcode 5

如何在 Xcode 5 for iOS 中保存和加载图像?

如何保存游戏数据[关闭]

NSUserDefault 无法在 iOS8 的扩展中保存和加载

Xcode:保存一个 Int 值