在运行时枚举UISupportedExternalAccessoryProtocols

时间:2016-04-26 20:58:16

标签: ios xamarin xamarin.ios info.plist property-list

我使用Xamarin.iOS为附件连接Objective-C库,该附件通过基座连接器连接到iPod和iPhone。在我的测试应用程序中发现我在Info.plist中的UISupportedExternalAccessoryProtocols下缺少值之前,我浪费了大量时间尝试让附件在我的测试应用程序中工作。

我想在使用我的包装库时阻止其他人遇到同样的问题。由于这是一个图书馆,我的项目中没有Info.plist,对吧?因此,我想枚举调用者对UISupportedExternalAccessoryProtocols的值,以便向开发人员提供一条易于阅读的消息,告知他们缺少值。有没有办法在运行时执行此操作?

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用

var values =  NSBundle.MainBundle.ObjectForInfoDictionary("UISupportedExternalAccessoryProtocols"); 

从Info.plist中读取值,看它是否包含所有必需的值。

答案 1 :(得分:1)

其中任何一个都可以访问Info.plist中的值:

    var protocolArray = (NSArray)NSBundle.MainBundle.InfoDictionary ["UISupportedExternalAccessoryProtocols"];

或者

    var protocolArray = (NSArray)NSBundle.MainBundle.ObjectForInfoDictionary ("UISupportedExternalAccessoryProtocols");
然后得到像这样的值:

        for (nuint i = 0; i < protocolArray.Count; i++) {
            Console.Write (protocolArray.GetItem<NSString> (i).ToString ());
        }