0

我正在构建我的第一个大型 iOS 应用程序,并且使用了很多视图控制器和标签栏。我希望从每个视图控制器访问一些属性(如username等)。isUSerLoggedIn我正在使用NSUserDefaults来保存这些属性。这是一个很好的技术吗?

4

2 回答 2

1

NSUserDefault 用于持久保存。

用户名是一个很好的例子,isUSerLoggedIn 并不总是(认为即使您的应用程序已终止,它也会被保存,这是您想要的吗?)。

在某些情况下,您应该考虑使用单例:

static SingletonSample *sharedObject;
+ (SingletonSample*)sharedInstance
    {
         if (sharedObject == nil) {
         sharedObject = [[super allocWithZone:NULL] init];
          }
    return sharedObject;
    }
于 2013-07-03T06:59:18.963 回答
0

有两种方法:

1)你可以使用钥匙串。

例子:

//Initializing
KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"YourAppLogin" accessGroup:nil];
//Saving
[keychainItem setObject:@"password you are saving" forKey:kSecValueData];
[keychainItem setObject:@"username you are saving" forKey:kSecAttrAccount];
//Getting
NSString *password = [keychainItem objectForKey:kSecValueData];
NSString *username = [keychainItem objectForKey:kSecAttrAccount];
//deleting
[keychainItem resetKeychainItem];

2)或者你可以使用 NSUserDefaults

例子:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString *pword = [prefs setObject:@"yourpassword" ForKey:@"password"];
NSString *username = [prefs setObject:@"username" ForKey:@"username"];
[prefs synchronize];
//getting 
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString *pword = [prefs objectForKey:@"password"];
NSString *username = [prefs objectForKey:@"username"];

方法 1 比方法 2 更安全,因为 NSUserDefaults 只是一个 plist。有人窃取了您的设备,进行了备份,并将所有密码保存在一个漂亮的 xml 文件中。使用加密,方法 2 变为方法 1,只是更复杂。

于 2013-07-03T07:24:25.717 回答