DirectoryInfo. GetDirectories () и атрибуты

Обновление для Swift 4

Я попробовал несколько разных вариантов создания нескольких пользователей из одной учетной записи, но это, безусловно, лучшее и самое простое решение.

Оригинальный ответ Nico

Сначала сконфигурируйте firebase в файле AppDelegate.swift

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    FirebaseApp.configure()
    FirebaseApp.configure(name: "CreatingUsersApp", options: FirebaseApp.app()!.options)

    return true
}

Добавьте следующий код в действие, в котором вы создаете учетные записи.

            if let secondaryApp = FirebaseApp.app(name: "CreatingUsersApp") {
                let secondaryAppAuth = Auth.auth(app: secondaryApp)

                // Create user in secondary app.
                secondaryAppAuth.createUser(withEmail: email, password: password) { (user, error) in
                    if error != nil {
                        print(error!)
                    } else {
                        //Print created users email.
                        print(user!.email!)

                        //Print current logged in users email.
                        print(Auth.auth().currentUser?.email ?? "default")

                        try! secondaryAppAuth.signOut()

                    }
                }
            }
        }

6
задан CRABOLO 22 March 2015 в 20:27
поделиться

3 ответа

@rslite является правильным.NET не дает такую фильтрацию из поля, но не трудно реализовать:

static IEnumerable<string> GetNonSystemDirs(string path)
{
    var dirs = from d in Directory.GetDirectories(path)
               let inf = new DirectoryInfo(d)
               where (inf.Attributes & FileAttributes.System) == 0
               select d;

    foreach (var dir in dirs)
    {
        yield return dir;
        foreach (var subDir in GetNonSystemDirs(dir))
        {
            yield return subDir;
        }
    }
}

Ссылки MSDN:

FileSystemInfo. Свойство атрибутов

Перечисление FileAttributes

8
ответ дан 9 December 2019 в 22:42
поделиться

Это - яркий пример сценария, где Linq и дополнительные методы заставляют вещи действительно убрать и легкий.

public static DirectoryInfo[] GetNonSystemDirectories(
    this DirectoryInfo directory,
    string searchPattern,
    SearchOption searchOption)
{
    return directory.GetDirectories(searchPattern, searchOption)
        .Where(subDir => (subDir.Attributes & FileAttributes.System) == 0)
        .ToArray();
}

Если Вы создаете приложение .net v2, то можно использовать LinqBridge для предоставления Вам доступа ко всему классному Linq к методам объектов (как Где () и ToArray () выше).

Править

В .net v4 Вы использовали бы EnumerateDirectories вместо GetDirectories, который позволяет Вам выполнять итерации по результатам, не создавая массив в памяти сначала.

public static IEnumerable<DirectoryInfo> EnumerateNonSystemDirectories(
    this DirectoryInfo directory,
    string searchPattern,
    SearchOption searchOption)
{
    return directory.EnumerateDirectories(searchPattern, searchOption)
        .Where(subDir => (subDir.Attributes & FileAttributes.System) == 0);
}
3
ответ дан 9 December 2019 в 22:42
поделиться

Необходимо было бы, вероятно, циклично выполниться через результаты и отклонить тех, которые имеют атрибуты, которые Вы не хотите (используйте свойство Attributes).

0
ответ дан 9 December 2019 в 22:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: