我正在尝试使用 IAppVersion 类获取我的 iOS 项目的构建版本。但是,在通过远程登录到 macbook 部署到 iOS 模拟器时,我得到了 system.formatException 异常。错误是“system.FormatException: 'Input string was not in a correct format.'” 实际上,这是我第一次通过远程登录将 iOS 项目部署到模拟器中。我尝试了很多方法来解决这个问题。但是,他们都没有工作。请让我知道是否有任何方法可以将 NSObject 转换为字符串,然后再转换为 Int。 谢谢。
public class Version_iOS: IAppVersion
{
public string GetVersion()
{
return NSBundle.MainBundle.ObjectForInfoDictionary("CFBundleShortVersionString").ToString();
}
public int GetBuild()
{
return int.Parse(NSBundle.MainBundle.ObjectForInfoDictionary("CFBundleVersion").ToString());
/*NSObject k = NSBundle.MainBundle.ObjectForInfoDictionary("CFBundleVersion");
string z = k.Description;
return int.TryParse(z);*/
}
}
根据CFBundleVesion文档,“此密钥是由一到三个以句点分隔的整数组成的机器可读字符串,例如10.14.1。”
这意味着它很可能无法解析为 int。因此,与其尝试将其解析为 int,不如尝试将其解析为 Version:
public Version GetBuild()
{
return Version.Parse(NSBundle.MainBundle.ObjectForInfoDictionary(
"CFBundleVersion").ToString());
}
然而,听起来它可以返回一个数字,这对
Version
类无效,所以最安全的做法是将其保留为字符串:
public string GetBuild()
{
return NSBundle.MainBundle.ObjectForInfoDictionary(
"CFBundleVersion").ToString();
}
最后一个想法:如果你真的想返回一个 int(版本中的第一个数字),你可以这样做:
public int GetBuild()
{
return int.Parse(NSBundle.MainBundle.ObjectForInfoDictionary(
"CFBundleVersion").ToString()
.Split('.')[0]);
}