我正在考虑使用MonoTouch将我的应用程序从标准iOS Objective C转换为C#。
在我的Objective C代码中,我生成一个唯一标识符并将其保存到NSUserDefaults以验证和检查后续登录。这是我正在使用的方法:
- (NSString *) localUuid {
NSString * ident = [[NSUserDefaults standardUserDefaults] objectForKey:UUID];
if(!ident){
CFUUIDRef uuidRef = CFUUIDCreate(NULL);
CFStringRef uuidStringRef = CFUUIDCreateString(NULL, uuidRef);
CFRelease(uuidRef);
ident = [NSString stringWithString:(__bridge_transfer NSString *)uuidStringRef];
[[NSUserDefaults standardUserDefaults] setObject:ident forKey:UUID];
[[NSUserDefaults standardUserDefaults] synchronize];
}
return ident;
}
我在使用MonoTouch在C#中使用类似的东西时遇到了问题。
我没有找到Mono提供的CFUUID_ _ 方法的版本。
此外,虽然似乎有一个NSUserDefaults.StandardUserDefaults.SetValueForKey方法,但没有一个简单的GetValueForKey方法。
有没有更多有经验的Monotouch有更好的方法来做到这一点?
答案 0 :(得分:10)
CFUUID
没有绑定,因为使用.NET System.Guid
更容易实现相同的目标。 E.g。
var uuid = Guid.NewGuid ();
string s = uuid.ToString (); // if a string is preferred
此外,虽然似乎有一个NSUserDefaults.StandardUserDefaults.SetValueForKey方法,但没有一个简单的GetValueForKey方法。
有安全的类型方法可以做同样的事情,例如:
NSUserDefaults settings = NSUserDefaults.StandardUserDefaults;
settings.SetString (s, "key");