如何在MonoTouch中将bool转换为NSObject

时间:2012-11-12 22:22:27

标签: c# mono xamarin.ios nsuserdefaults

这让我有点疯狂。我试图在我的MonoTouch应用程序中注册一些NSUserDefaults。

var defaultsToRegister = new NSMutableDictionary();
defaultsToRegister.SetValueForKey(true, IS_REMINDING);
NSUserDefaults.StandardUserDefaults.RegisterDefaults(defaultsToRegister);

显然这不是编译因为 bool 无法转换为 NSObject 。但是当我想从 NSUserDefaults 设置或检索一个布尔值时,我可以使用:

public bool IsReminding {
    get {
        return NSUserDefaults.StandardUserDefaults.BoolForKey(IS_REMINDING);
    }

    set {
        NSUserDefaults.StandardUserDefaults.SetBool(value, IS_REMINDING);
    }
}

在设置plist文件中,布尔值写为<key>ReminderTimeOfDay</key><true/>,这正是我所期望的。那么如何注册默认的布尔值?

2 个答案:

答案 0 :(得分:11)

以下对我有用:

 bool someValue;
 NSObject objValue = NSObject.FromObject(someValue);

答案 1 :(得分:6)

我就是这样做的:

using (var defaults = NSDictionary.FromObjectsAndKeys (new object[] {
        true,
    }, new object [] {
        "AllowInternetAccess",
    })) {

    settings.RegisterDefaults (defaults);
}

当然,我有多个键/值对,这样我就可以避免多次调用NSMutableDictionary