ios - 在delphi中询问版本IOS
问题描述
我用来获取 ios 应用程序版本的代码不起作用。我不知道我做错了什么。这是代码:
function GetIOSVesion : string;
{$IFDEF IOS}
var
AppKey: Pointer;
AppBundle: NSBundle;
BuildStr : NSString;
begin
Result := '?';
try
AppKey := (StrToNSStr('CFBundleVersion') as ILocalObject).GetObjectID;
AppBundle := TNSBundle.Wrap(TNSBundle.OCClass.mainBundle);
BuildStr := TNSString.Wrap(AppBundle.infoDictionary.objectForKey(AppKey));
Result := UTF8ToString(BuildStr.UTF8String);
except
end;
end;
{$ENDIF}
我得到的错误是:未声明的标识符:NSBundle 未声明的标识符:NSString 未声明的标识符:strToNSStr 未声明的标识符:ILocalObject
ios的用途是:
{$IFDEF APPLE}
uses
{$IFDEF IOS}
iOSapi.Foundation,
{$ELSE}
Macapi.Foundation,
{$ENDIF}
Macapi.Helpers,
Macapi.ObjectiveC;
{$ENDIF}
解决方案
NSBundle 定义在Macapi.Foundation
. mac API不是IOS。因此,要么您必须添加Macapi.Foundation
到 uses 子句,要么不能NSBundle
在 iOS 应用程序中使用,或者 RTL 中缺少它。
推荐阅读
- angular - 当我登录时如何设置超时并离开该路线?
- java - 与旧嵌套列表相比,如何识别新嵌套列表中是否有任何添加或删除或相同的对象
- swift - 如何在运行时更改 Safari 应用程序扩展中的工具栏图标?
- machine-learning - AutoML 文本分类的数据集导入错误
- optimization - IBM Optimization Studio OPL,为什么不遵守约束?
- ruby-on-rails - 使用 Roo 导入 Google 电子表格内容时排除标题
- twitter-bootstrap - 显示数据属性引导模式
- unit-testing - 我需要帮助来生成对 angular6 中 fromEvent 可观察的测试
- umbraco - 来自 uskinned 网站的 Umbraco 主题不起作用
- rdf4j - RDF4J 2.4.0-M3 GeoSPARQL 查询不工作