在MonoTouch中生成并存储唯一ID

cai*_*ain 4 uuid nsuserdefaults xamarin.ios ios

我正在考虑使用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;

    }
Run Code Online (Sandbox Code Playgroud)

我在使用MonoTouch在C#中使用类似的东西时遇到了问题.

我还没有找到Mono可用的CFUUID_ _方法版本.
此外,虽然似乎有一个NSUserDefaults.StandardUserDefaults.SetValueForKey方法,但没有一个简单的GetValueForKey方法.

有没有更多经验的Monotouch知道更好的方法来做到这一点?

pou*_*pou 10

CFUUID没有约束,因为使用.NET更容易System.Guid实现相同的目标.例如

var uuid = Guid.NewGuid ();
string s = uuid.ToString (); // if a string is preferred
Run Code Online (Sandbox Code Playgroud)

此外,虽然似乎有一个NSUserDefaults.StandardUserDefaults.SetValueForKey方法,但没有一个简单的GetValueForKey方法.

有安全的类型方法来做同样的事情,例如:

NSUserDefaults settings = NSUserDefaults.StandardUserDefaults;
settings.SetString (s, "key");
Run Code Online (Sandbox Code Playgroud)