首页 > 解决方案 > 在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}

标签: iosdelphipascal

解决方案


NSBundle 定义在Macapi.Foundation. mac API不是IOS。因此,要么您必须添加Macapi.Foundation到 uses 子句,要么不能NSBundle在 iOS 应用程序中使用,或者 RTL 中缺少它。


推荐阅读