4

私は、MonoTouchを使用して私のアプリを標準のiOS Objective CからC#に移行することを検討しています。

私のObjectiveCコードでは、一意の識別子を生成し、それを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メソッドはありません。

モノタッチの経験が豊富な人は、これを行うためのより良い方法を知っていますか?

4

1 に答える 1

10

CFUUIDSystem.Guid同じことを達成するために.NETを使用する方が簡単なので、バインドされていません。例えば

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 に答える