4

我正在考虑使用 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 更有经验的人知道更好的方法?

4

1 回答 1

10

CFUUID不受约束,因为使用 .NET 更容易System.Guid实现相同的目的。例如

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");
于 2012-12-10T20:26:15.773 回答