如何在MonoTouch中将NSString转换为String

Chr*_*vik 6 xamarin.ios

我正在尝试为MonoTouch实现推送通知,但我无法在任何地方找到这样的样本.我的问题是尝试将deviceID读入.NET字符串.

下面的输出只是很多问号所以我在这里做错了.

任何帮助将不胜感激!

    public override void RegisteredForRemoteNotifications (UIApplication application, NSData deviceToken)
    {
        Console.WriteLine("Converting device ID...");
        NSString s = NSString.FromData(deviceToken, NSStringEncoding.UTF8);
        Console.WriteLine("DEVICE ID IS: " + s);
        s = NSString.FromData(deviceToken, NSStringEncoding.ASCIIStringEncoding);
        Console.WriteLine("DEVICE ID IS: " + s);
         s = NSString.FromData(deviceToken, NSStringEncoding.Unicode);
        Console.WriteLine("DEVICE ID IS: " + s);


    }
Run Code Online (Sandbox Code Playgroud)

Pab*_*ruz 8

在MonoTouch中有一个隐式转换运算符.

所以你只需:

NSString s = NSString.FromData(deviceToken, NSStringEncoding.UTF8);
string csstring = s;
// done
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用NSStringToString()方法:

NSString s = NSString.FromData(deviceToken, NSStringEncoding.UTF8);
string csstring = s.ToString();
Run Code Online (Sandbox Code Playgroud)

这是相关文档.


Nik*_*der 4

这是一篇很棒的文章,展示了如何使用 MonoTouch 进​​行推送通知:

http://weblogs.thinktecture.com/cweyer/2010/12/implementing-push-notifications-for-ios-with-c-monotouch-using-the-cloud-urban-airship.html

这是执行您想要的操作的代码片段:

var str = (NSString)Runtime.GetNSObject (
                Messaging.intptr_objc_msgSend (deviceToken.Handle, new Selector("description").Handle));

var deviceTokenString = str.ToString ().Replace ("<", "").Replace (">", "").Replace (" ", "");
Run Code Online (Sandbox Code Playgroud)