在运行时枚举 UISupportedExternalAccessoryProtocols
Enumerate UISupportedExternalAccessoryProtocols at runtime
我正在使用 Xamarin.iOS 为通过底座连接器连接到 iPod 和 iPhone 的配件包装 Objective-C 库。在我发现我的测试应用程序 Info.plist 中的 UISupportedExternalAccessoryProtocols 下缺少值之前,我浪费了很多时间试图让附件在我的测试应用程序中工作。
我想防止其他人在使用我的包装器库时 运行遇到同样的问题。由于这是一个库,我的项目中不能有 Info.plist ,对吗?所以我想枚举调用者对 UISupportedExternalAccessoryProtocols 的值,这样我就可以向开发人员提供一条易于阅读的消息,告知他们缺少值。有没有办法在 运行 时间做到这一点?
谢谢!
您可以使用
var values = NSBundle.MainBundle.ObjectForInfoDictionary("UISupportedExternalAccessoryProtocols");
从 Info.plist 中读取值并查看它是否包含所有需要的值。
其中任何一个都可以访问 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 ());
}
我正在使用 Xamarin.iOS 为通过底座连接器连接到 iPod 和 iPhone 的配件包装 Objective-C 库。在我发现我的测试应用程序 Info.plist 中的 UISupportedExternalAccessoryProtocols 下缺少值之前,我浪费了很多时间试图让附件在我的测试应用程序中工作。
我想防止其他人在使用我的包装器库时 运行遇到同样的问题。由于这是一个库,我的项目中不能有 Info.plist ,对吗?所以我想枚举调用者对 UISupportedExternalAccessoryProtocols 的值,这样我就可以向开发人员提供一条易于阅读的消息,告知他们缺少值。有没有办法在 运行 时间做到这一点?
谢谢!
您可以使用
var values = NSBundle.MainBundle.ObjectForInfoDictionary("UISupportedExternalAccessoryProtocols");
从 Info.plist 中读取值并查看它是否包含所有需要的值。
其中任何一个都可以访问 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 ());
}