创建一个预算应用程序(不是为了发布,只是一些快速而肮脏的东西),我注意到在启动Master-Detail模板时,Apple使用CoreData和NSFetch结果来填充表格(想想iPad上的Notes)。我缺乏经验和不专业的编程本能不会三思而后行地获取NSMutableArray,获取表格单元格的名称并将它们塞入索引,将其保存为NSUserDefault,然后在重新加载应用程序时,填充每个单元格当前索引与NSMutableArray中的索引相同,因此内容返回到用户离开的位置。只是想知道,与使用CoreData相比,这有多低效?附带说明一下,有什么简单的方法可以在两个都保存动态数据的不同
在我的健身应用程序中,我存储了各种需要在整个应用程序中以不同程度访问的值。目标、最大值、最小值、类名、fontColors、笔画、gradientColors等。由于应用程序是在我学习编码的同时创建的,所以我混合使用了上述所有存储方法——一团糟。要点,目标变量(如10,000步或目标体重)在整个应用程序中出现并经常在代码中使用,但用户不会经常更改它们经常。最重要的是,目标始终如一,在整个版本更新过程中也是如此,因为如果用户不得不重新添加它们,他/她会很生气。存储目标变量的最佳做法是什么,可能有20个左右? 最佳答案 通用规则如下:可
我想知道在NSUserDefaults中存储用户登录信息(例如用户名和密码)时的安全性。在关于如何存储此类信息的问题中,每个人都说NSUserDefaults不好,而KeyChan是正确的方法。但他们从不说为什么NSUserDefaults不好。在NSUserDefaults中存储密码是否存在安全风险?如果使用NSUserDefaults而不是KeyChain,它会被“黑客”访问吗? 最佳答案 这两种方法都使用独特的键/值方法,这是它们唯一的共同点。NSUserDefaults不使用加密并且是应用沙箱的一部分。因此,一旦应用程序被删
我为重复的问题道歉。我是ios的新手。我想将自定义对象存储在userdefaults中。我正在使用objective-c。提前致谢 最佳答案 首先,您创建自定义类,如下所示。自定义对象.h#import@interfaceCustomObject:NSObject@property(strong,nonatomic)NSString*name;@end自定义对象.m#import"CustomObject.h"@implementationCustomObject-(void)encodeWithCoder:(NSCoder*)en
在我的项目中,我在我的应用程序委托(delegate)中使用NSMutableArray和NSUserDefaults:-(BOOL)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions{array=[[NSMutableArrayalloc]initWithArray:[[NSUserDefaultsstandardUserDefaults]objectForKey:@"array"]];和-(void)applicationWillTermi
我将用户名/密码存储在NSUserDefaults中。我不希望将此信息备份到iCloud。我怎样才能确保这不会发生?从文档看来,除非您使用NSUbiquitousKeyStore,否则NSUserDefaults根本不会备份。我的解释正确吗?谢谢! 最佳答案 这是正确的。iCloud可以进行键/值存储,但您必须明确使用此功能。NSUserDefaults不会与iCloud同步,因为存储在磁盘上的默认pList不在普遍存在的容器中。 关于ios-NSUserDefaults会同步到iClo
我创建了一个应用程序,它将使用用户名和密码登录,并允许用户从服务器下载文件。在我的应用程序中,一旦用户登录应用程序,我必须保留一些数据。持久化用户名、密码、用户下载列表、订阅计划等数据。数据可以通过NSUserDefaults、Plist等保存在应用程序中。但我觉得使用NSUserDefaults存储和检索值很容易。因为我需要在许多ViewController中使用这些值,所以我更喜欢NSUserDefaults。这是最佳实践吗?使用过多的NSUserDefaults会导致陷阱?告诉我还有其他方法可以在cocoa-touch中持久保存数据并轻松检索数据吗?
我有超时功能,如果应用程序空闲(在后台)一段时间,我会超时我的应用程序并将用户发送到登录屏幕。我在我的应用程序委托(delegate)中将用户默认设置中的“timedOut”键设置为YES,然后在每个ViewController中引用该键,如果它是YES,我将转至登录屏幕。在登录屏幕上,如果“timedOut”为"is",我有一个标签显示“session已超时”。我的问题是,如果我登录,然后很快注销,就会显示标签,即使我在显示标签后立即将该键显式设置为NO,然后同步用户默认值。如果我等一两秒钟然后注销,标签就会像它应该的那样被隐藏。我已经解决了“问题”,但想了解行为。View中的代码确
我的iOS应用程序需要在NSUserDefault中存储一个MKPolyline。我做了很多研究,现在我知道:NSUserDefaults是NSCoder的子类MKPolyline不是NSCoder的子类因此,很难将折线保存到nsuserdefaults。.我试图将MKPolyline转换为NSData:NSUserDefaults*defaults=[NSUserDefaultsstandardUserDefaults];NSData*data=[NSKeyedArchiverarchivedDataWithRootObject:routeLine];//routeLineisanM
当我从我的应用程序的语言选择列表中选择一种语言时,它会显示我之前选择的语言。如果我从我的模拟器堆栈中清除该应用程序或从xcode中清除它,然后运行该项目,之后一切正常,如果我想再次更改语言,那么我会遇到同样的问题。我的代码如下:-(IBAction)English:(id)sender{NSUserDefaults*userDefault=[NSUserDefaultsstandardUserDefaults];[userDefaultsetObject:[NSArrayarrayWithObjects:@"en",nil]forKey:@"AppleLanguages"];[user