在MonoTouch中生成并存储唯一ID

时间:2012-12-10 19:43:53

标签: ios xamarin.ios nsuserdefaults uuid

我正在考虑使用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有更好的方法来做到这一点?

1 个答案:

答案 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");