Как мне перечислить все поля объекта в Objective-C?

using System.Reflection;

try
{
    Uri UriAssemblyFolder = new Uri(System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase));
    string appPath = UriAssemblyFolder.LocalPath;

    //Open the configuration file and retrieve 
    //the connectionStrings section.
    Configuration config = ConfigurationManager.
        OpenExeConfiguration(appPath + @"\" + exeConfigName);

    ConnectionStringsSection section =
        config.GetSection("connectionStrings")
        as ConnectionStringsSection;
}

По крайней мере, это метод, который я использую при шифровании и расшифровке раздела connectionStrings для моих консольных / графических приложений. exeConfigName - имя исполняемого файла, включая файл .exe.

23
задан Dumoko 17 December 2013 в 15:23
поделиться

2 ответа

Как уже упоминалось, вы можете использовать Objective-C API среды выполнения для получения имен переменных экземпляра:

unsigned int varCount;

Ivar *vars = class_copyIvarList([MyClass class], &varCount);

for (int i = 0; i < varCount; i++) {
    Ivar var = vars[i];

    const char* name = ivar_getName(var);
    const char* typeEncoding = ivar_getTypeEncoding(var);

    // do what you wish with the name and type here
}

free(vars);
42
ответ дан 29 November 2019 в 01:45
поделиться

Рассмотрим gen_bridge_metadata , который предназначен для совершенно другой цели, но может создавать файлы XML из файлов заголовков Objective-C.

0
ответ дан 29 November 2019 в 01:45
поделиться