2
我們正在嘗試部署我們的Xamarin
構建的應用程序的AppStore的Apple
,所以我們需要將我們的到Unified Api
應用程序獲取64位支持。升級到的Xamarin.iOS
最新版本(版本:8.8.2.4)後和應用程序遷移到Unified Api
,現在我們得到以下編譯錯誤:無法訪問受保護的成員「Foundation.NSDictionary.NSDictionary(System.IntPtr)」
Cannot access protected member 'Foundation.NSDictionary.NSDictionary(System.IntPtr)' via a qualifier of type 'Foundation.NSDictionary'.
在這條線上出現的錯誤:
NSDictionary prefSpecification = new NSDictionary(preferences.ValueAt(i));
這個方法調用的:
public static void RegisterDefaultsFromSettingsBundle()
{
string settingsBundle = NSBundle.MainBundle.PathForResource("Settings", @"bundle");
if(settingsBundle == null) {
System.Console.WriteLine(@"Could not find Settings.bundle");
return;
}
NSString keyString = new NSString(@"Key");
NSString defaultString = new NSString(@"DefaultValue");
NSDictionary settings = NSDictionary.FromFile(Path.Combine(settingsBundle,@"Root.plist"));
NSArray preferences = (NSArray) settings.ValueForKey(new NSString(@"PreferenceSpecifiers"));
NSMutableDictionary defaultsToRegister = new NSMutableDictionary();
for (uint i=0; i<preferences.Count; i++) {
NSDictionary prefSpecification = new NSDictionary(preferences.ValueAt(i));
NSString key = (NSString) prefSpecification.ValueForKey(keyString);
if(key != null) {
NSObject def = prefSpecification.ValueForKey(defaultString);
if (def != null) {
defaultsToRegister.SetValueForKey(def, key);
}
}
}
NSUserDefaults.StandardUserDefaults.RegisterDefaults(defaultsToRegister);
}
任何人都可以解釋爲什麼發生這種情況,我該如何解決這個問題?
感謝您的答覆,FormigaNinja。不幸的是,當我嘗試這個時,我得到錯誤「無法將類型'System.IntPtr'轉換爲'Foundation.NSDictionary' – BruceHill
您是否使用新的統一API?請參閱我的答案更新 – FormigaNinja
嗨FormigaNinja。 API。感謝您的更新答案。「運行時」定義在哪裏?它在我的靜態方法的上下文中不可用。「名稱'運行時'在此上下文中不存在」是我現在得到的錯誤消息 – BruceHill