Руководство C# | Перечисления

93

C# — Руководство по C# — Перечисления

Перечисление (enumeration) — это определяемый пользователем целочисленный тип. Когда вы объявляете перечисление, то специфицируете набор допустимых значений, которые могут принимать экземпляры перечислений. Но мало того — этим значениям еще должны быть присвоены имена, понятные для пользователей. Если где-то в коде попытаться присвоить экземпляру перечисления значение, не входящее в список допустимых, компилятор выдаст ошибку.

Определение перечисления может в долговременной перспективе сэкономить массу времени и избавить от головной боли. Существует, по крайней мере, три явных выгоды от применения перечислений вместо простых целых:

  • Как упоминалось, перечисления облегчают сопровождение кода, гарантируя, что переменным будут присваиваться только легитимные, ожидаемые значения.

  • Перечисления делают код яснее, позволяя обращаться к целым значениям, называя их осмысленными именами вместо малопонятных «магических» чисел.

  • Перечисления облегчают ввод исходного кода. Когда вы собираетесь присвоить значение экземпляру перечислимого типа, то интегрированная среда Visual Studio с помощью средства IntelliSense отображает всплывающий список с допустимыми значениями, что позволяет сэкономить несколько нажатий клавиш и напомнить о возможном выборе значений.

Перечислимый тип данных объявляется с помощью ключевого слова enum. Ниже приведена общая форма объявления перечисления:


enum имя {список_перечисления};

где имя — это имя типа перечисления, а список_перечисления — список идентификаторов, разделяемый запятыми.

Следует особо подчеркнуть, что каждая символически обозначаемая константа в перечислении имеет целое значение. Тем не менее неявные преобразования перечислимого типа во встроенные целочисленные типы и обратно в C# не определены, а значит, в подобных случаях требуется явное приведение типов. Кроме того, приведение типов требуется при преобразовании двух перечислимых типов. Но поскольку перечисления обозначают целые значения, то их можно, например, использовать для управления оператором выбора switch или же оператором цикла for.

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

Давайте рассмотрим пример использования перечислений:

using System;

namespace ConsoleApplication1
{
    // Создать перечисление
    enum UI : long { Name, Family, ShortName = 5, Age, Sex }

    class Program
    {
        static void Main()
        {
            UI user1;
            for (user1 = UI.Name; user1 

Значение одной или нескольких символически обозначаемых констант в перечислении можно задать с помощью инициализатора. Для этого достаточно указать после символического обозначения отдельной константы знак равенства и целое значение. Каждой последующей константе присваивается значение, которое на единицу больше значения предыдущей инициализированной константы. В приведенном выше примере инициализируется константа ShortName.

По умолчанию в качестве базового для перечислений выбирается тип int, тем не менее перечисление может быть создано любого целочисленного типа, за исключением char. Для того чтобы указать другой тип, кроме int, достаточно поместить этот тип после имени перечисления, отделив его двоеточием.

Изменять базовый тип перечислений удобно в случае создания таких приложений .NET, которые будут развертываться на устройствах с небольшим объемом памяти (таких как поддерживающие .NET сотовые телефоны или устройства PDA), чтобы экономить память везде, где только возможно. Естественно, если для перечисления в качестве базового типа указан byte, каждое значение в этом перечислении ни в коем случае не должно выходить за рамки диапазона его допустимых значений.

Перечисления очень широко применяются во всех библиотеках базовых классов .

NET. Например, в ADO.NET множество перечислений используется для обозначения состояния соединения с базой данных (например, открыто оно или закрыто) и состояния строки в DataTable (например, является она измененной, новой или отсоединенной). Поэтому в случае применения любых перечислений следует всегда помнить о наличии возможности взаимодействовать с парами «имя/значение» в них с помощью членов System.Enum.

Перечисления — SwiftBook

Перечисления определяют общий тип для группы ассоциативных значений и позволяют работать с этими значениями в типобезопасном режиме в вашем коде.

Если вы знакомы с C, то вы знаете, что перечисления в C присваивают соответствующие имена набору целочисленных значений. Перечисления в Swift более гибкий инструмент и не должны предоставлять значения для каждого члена перечисления. Если значение (известное как “сырое” значение) предоставляется каждому члену перечисления, то это значение может быть строкой, символом или целочисленным значением, числом с плавающей точкой.

Кроме того, членам перечисления можно задать соответствующие значения любого типа, которые должны быть сохранены вместе с каждым кейсом перечисления. Вы можете определить общий набор соответствующих значений как часть одного перечисления, каждый из которых будет иметь разные наборы значений ассоциативных типов связанных с ними.

Перечисления в Swift — типы “первого класса”. Они обладают особенностями, которые обычно поддерживаются классами, например, вычисляемые свойства, для предоставления дополнительной информации о текущем значении перечисления, методы экземпляра для дополнительной функциональности, относящейся к значениям, которые предоставляет перечисление.

Перечисления так же могут объявлять инициализаторы для предоставления начального значения элементам. Они так же могут быть расширены для наращивания своей функциональности над её начальной реализацией. Могут соответствовать протоколам для обеспечения стандартной функциональности.

Больше про эти возможности можно прочитать в разделах Свойства, Методы, Инициализация, Расширения и Протоколы.

Перечисления начинаются с ключевого слова enum, после которого идет имя перечисления и полное его определение в фигурных скобках:

enum SomeEnumeration {
    //здесь будет объявление перечисления
}

Ниже пример с четырьмя сторонами света:

enum CompassPoint {
    case north
    case south
    case east
    case west
}

Значения, объявленные в перечислении (north, south, east, и west), называются кейсами перечисления. Используйте ключевое слово case для включения нового кейса перечисления.

Заметка

В отличии от C и Objective-C в Swift кейсам перечисления не присваиваются целочисленные значения по умолчанию при их создании. В примере выше CompassPoint, значения членов north, south, east и west неявно не равны 0, 1, 2, 3. Вместо этого различные члены перечисления по праву полностью самостоятельны, с явно объявленным типом CompassPoint.

Множественные значения члена перечисления могут записываться в одну строку, разделяясь между собой запятой:

enum Planet {
    case mercury, venus, earth, mars, jupiter, saturn, uranus, neptune
}

Каждое объявление перечисления объявляет и новый тип. Как и остальные типы в Swift, их имена (к примеру CompassPoint и Planet) должны начинаться с заглавной буквы. Имена перечислениям лучше давать особенные, а не те, которые вы можете использовать в нескольких местах, так чтобы они читались как само собой разумеющиеся:

var directionToHead = CompassPoint.west

Тип directionToHead выведен при инициализации одного из возможных значений CompassPoint. Если directionToHead объявлена как CompassPoint, то можем использовать различные значения CompassPoint через сокращенный точечный синтаксис:

directionToHead = .east

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

Вы можете сочетать индивидуальные значения перечисления с инструкцией switch:

directionToHead = .south
switch directionToHead {
case .north:
    print("Lots of planets have a north")
case . south:
    print("Watch out for penguins")
case .east:
    print("Where the sun rises")
case .west:
    print("Where the skies are blue")
}
// Выводит "Watch out for penguins"

Вы можете прочитать этот код как:

“Рассмотрим значение directionToHead. В случае, когда directionToHead равняется .north, выводится сообщение ”Lots of planets have a north“. В кейсе, где оно равняется .south, выводится сообщение ”Watch out for penguins».

…и так далее…

Как сказано в главе “Управление потоком”, оператор switch должен быть исчерпывающим, когда рассматриваются члены перечисления. Если мы пропустим case .west, то код не скомпилируется, так как не рассматривается полный перечень членов CompassPoint. Требования к конструкции быть исчерпывающей, помогает случайно не пропустить член перечисления.

Если не удобно описывать кейс для каждого члена перечисления, то вы можете использовать кейс default, для закрытия всех остальных вариантов перечисления:

let somePlanet = Planet. earth
switch somePlanet {
case .earth:
    print("Mostly harmless")
default:
    print("Not a safe place for humans")
}
// Выведет "Mostly harmless"

Для некоторых перечислений можно получить коллекцию всех кейсов перечисления. Нужно лишь написать: CaseIterable после имени перечисления. Swift предоставляет коллекцию всех кейсов, как свойство allCases типа перечисления. Пример:

 enum Beverage: CaseIterable {
    case coffee, tea, juice
}
let numberOfChoices = Beverage.allCases.count
print("\(numberOfChoices) beverages available")
// Выведет "3 beverages available"

В приведенном выше примере следует писать Beverage.allCases для доступа к коллекции, содержащей все кейсы перечисления Beverage. Можно использовать allCases, как и любую другую коллекцию — элементы коллекции являются экземплярами типа перечисления, поэтому в этом случае они являются значениями Beverage. В приведенном выше примере подсчитывается количество кейсов, приведенный ниже пример использует цикл for для итерации по всем кейсам.

for beverage in Beverage.allCases {
    print(beverage)
}
// coffee
// tea
// juice

Синтаксис, использованный в приведенных выше примерах, обозначает перечисление как соответствующее протоколу CaseIterable. Для получения информации о протоколах см. Протоколы.

Примеры в предыдущей секции показывают, как кейсы перечисления определены (и типизированы) как самостоятельные значения. Вы можете установить Planet.earth как константу или переменную и посмотреть какое значение она содержит. Однако бывает удобно хранить ассоциативные значения других типов вместе с этими значениями кейсов перечисления. Это позволяет вам хранить дополнительную пользовательскую информацию вместе со значением кейса и разрешает изменять эту информацию каждый раз как вы используете этот кейс перечисления в вашем коде.

Вы можете объявить перечисления Swift для хранения ассоциативных значений любого необходимого типа, и типы значений могут отличаться для каждого члена перечисления, если это необходимо. Перечисления такого типа так же известны как размеченные объединения, маркированные объединения или варианты в других языках программирования.

Для примера, предположим систему инвентаризации, которая должна отслеживать товар двумя различными типами штрих-кодов. Одни товары имеют коды типа 1D формата UPC-A, которые используют цифры от 0 до 9. Каждый штрих-код имеет свою “систему цифр”, где идут пять цифр “кода производителя” и пять цифр “кода продукта”. Затем идет “проверочная” цифра, которая проверяет, что код был отсканирован корректно:

Другие продукты имеют маркировку штрих-кодом 2D формата QR, который может использовать любой символ из ISO 8859–1 и может закодировать строку длиною 2953 символа:

Было бы удобно, если бы система контроля и учета товара могла бы хранить штрих-коды формата UPC-A, как кортеж из четырех целых чисел и QR код, как строку любой длины.

В Swift перечисления для определения штрих-кода продукта одного из двух типов может выглядеть следующим образом:

enum Barcode {
    case upc(Int, Int, Int, Int)
    case qrCode(String)
}

Читается это вот так:

“Объявление перечисления типа Barcode, которое берет два значения, одно из которых upc, с ассоциативным значением типа (Int, Int, Int, Int) и значение qrCode с ассоциативным значением типа String.

Объявление не дает никакого значения типа Int или String, оно лишь определяет типы ассоциативных значений, которые константы или переменные Barcode могут содержать, когда они равны Barcode.upc или Barcode.qrCode.

Новые штрих-коды могут быть созданы с помощью любого типа:

var productBarcode = Barcode.upc(8, 85909, 51226, 3)

В этом примере мы создаем новую переменную productBarcode и присваиваем ей значение Barcode.upc с ассоциативным кортежем значений (8, 85909, 51226, 3).

Этому же продукту может быть присвоено другое значение кода:

productBarcode = .qrCode("ABCDEFGHIJKLMNOP")

Здесь исходный Barcode.upc и его целочисленные значения заменены новым Barcode.qrCode и его строковым значением. Константы и переменные типа Barcode могут хранить или .upc или .qrCode (вместе с ассоциативными значениями), но они могут хранить только один из них в любой момент времени.

Различные типы штрих-кодов могут быть проверены инструкцией switch как и раньше. В этот раз ассоциативные значения могут быть извлечены как часть инструкции switch. Вы извлекаете каждое ассоциативное значение как константу (с префиксом let) или как переменную (префикс var) для использования внутри тела оператора switch:

switch productBarcode {
case .upc(let numberSystem, let manufacturer, let product, let check):
    print("UPC: \(numberSystem), \(manufacturer), \(product), \(check).")
case .qrCode(let productCode):
    print("QR code: \(productCode).")
}
// Выводит "QR code: ABCDEFGHIJKLMNOP."

Если все ассоциативные значения для членов перечисления извлекаются как константы или переменные, то для краткости вы можете разместить одиночное let или var перед именем члена:

switch productBarcode {
case let .upc(numberSystem, manufacturer, product, check):
    print("UPC : \(numberSystem), \(manufacturer), \(product), \(check).")
case let .qrCode(productCode):
    print("QR code: \(productCode).")
}
// Выведет "QR code: ABCDEFGHIJKLMNOP. "

В примере с Barcode в главе “Ассоциативные значения” можно увидеть как кейсы перечисления могут объявлять значения различных типов, которые они могут хранить. Как альтернатива ассоциативным значениям, кейсы перечисления могут иметь начальные значения (называются “исходными значениями”), которые всегда одного типа.

Вот пример перечисления, члены которого хранят исходные значения ASCII, прописанные рядом:

enum ASCIIControlCharacter: Character {
    case tab = "\t"
    case lineFeed = "\n"
    case carriageReturn = "\r"
}

Исходные значения перечисления ASCIIControlCharacter определены как тип Character, и им присвоены распространенные контрольные символы ASCII, которые описаны в разделе “Строки и символы”.

Исходные значения могут быть строками, символами или любым целым числом или числом с плавающей точкой. Каждое исходное значение должно быть уникальным при его объявлении.

Заметка

Исходные значения — это не то же самое, что ассоциативные значения. Исходные значения устанавливаются в качестве дефолтных значений, когда вы в первый раз определяете перечисление в вашем коде, как три ASCII кода выше. Исходное значение для конкретного кейса перечисления всегда одно и то же. Ассоциативные значения устанавливаются при создании новой константы или переменной, основываясь на одном из кейсов перечисления, и могут быть разными каждый раз, когда вы делаете это.

Неявно установленные исходные значения

Когда вы работаете с перечислениями, которые хранят целочисленные или строковые исходные значения, вам не нужно явно присваивать исходные значения для каждого конкретного кейса. Swift автоматически сделает это за вас.

Например, когда целые числа используются в качестве исходных значений, неявное значение для каждого кейса будет на единицу больше, чем в предыдущем кейсе. Если первый кейс не имеет заданного значения, его значение равно 0.

Перечисление ниже представляет собой уточнение ранее указанного перечисления Planet, с целочисленными исходными значениями для представления удаленности каждой планеты от солнца:

enum Planet: Int {
    case mercury = 1, venus, earth, mars, jupiter, saturn, uranus, neptune
}

В приведенном выше примере, Planet. mercury имеет явное исходное значение 1, Planet.venus имеет неявное исходное значение 2, и так далее.

Когда строки используются в качестве исходных значений, неявное значение для каждого кейса является текстом имени этого кейса.

Перечисление ниже представляет собой уточнение ранее указанного перечисления CompassPoint с исходными значениями строк для представления имени каждого направления:

enum CompassPoint: String {
    case north, south, east, west
}

В приведенном выше примере, CompassPoint.south имеет неявное исходное значение «south» и так далее.

Для доступа к исходному значению кейса перечисления существует свойство rawValue:

let earthsOrder = Planet.earth.rawValue
// значение earthsOrder равно 3
 
let sunsetDirection = CompassPoint.west.rawValue
// значение sunsetDirection равно "west"

Инициализация через исходное значение

Если вы объявили перечисление вместе с типом исходного значения, то перечисление автоматически получает инициализатор, который берет значение типа исходного значения (как параметр rawValue) и возвращает либо член перечисления либо nil. Вы можете использовать этот инициализатор, чтобы попытаться создать новый экземпляр перечисления.

В этом примере Uranus инициализируется через его исходное значение 7:

let possiblePlanet = Planet(rawValue: 7)
// possiblePlanet имеет тип Planet? и его значение равно Planet.uranus

Конечно не все возможные значения Int найдут отклик в данном перечислении. Из-за этого инициализаторы исходных значений всегда возвращают опциональный член перечисления. В этом примере possiblePlanet типа Planet? или “опциональный Planet”.

Заметка

Инициализатор исходного значения — проваливающийся инициализатор, потому как не каждое исходное значение будет возвращать кейс перечисления. Более подробно см. Проваливающиеся инициализаторы.

Если вы попытаетесь найти планету с номером позиции 11, то значение опциональной Planet, возвращенное исходным значением инициализатора, будет nil:

let positionToFind = 11
if let somePlanet = Planet(rawValue: positionToFind) {
    switch somePlanet {
    case . earth:
        print("Mostly harmless")
    default:
        print("Not a safe place for humans")
    }
} else {
    print("There isn't a planet at position \(positionToFind)")
}
// Выведет "There isn't a planet at position 11"

Этот пример использует привязку опционалов для попытки добраться до Planet с исходным значением 11. Выражение if let somePlanet = Planet(rawValue: 11) создает опциональную Planet и устанавливает значение somePlanet опциональной Planet, если она может быть восстановлена. В этом случае невозможно добраться до планеты с позицией 11, таким образом срабатывает ветка else.

Рекурсивные перечисления — это такие перечисления, экземпляры которого являются ассоциативным значением одного или более кейсов перечисления. Вы обозначаете такие кейсы перечисления при помощи ключевого слова indirect перед кейсом, что сообщает компилятору о том, что нужен дополнительный слой индирекции.

Например, ниже объявлено перечисление, которое хранит простые арифметические выражения:

enum ArithmeticExpression {
    case number(Int)
    indirect case addition(ArithmeticExpression, ArithmeticExpression)
    indirect case multiplication(ArithmeticExpression, ArithmeticExpression)
}

Вы так же можете написать indirect прямо перед самим перечислением, что позволит обозначить то, что все члены перечисления поддерживают индиректность:

indirect enum ArithmeticExpression {
    case number(Int)
    case addition(ArithmeticExpression, ArithmeticExpression)
    case multiplication(ArithmeticExpression, ArithmeticExpression)
}

Перечисление может хранить три вида арифметических выражений: простое число, сложение двух выражений, умножение двух выражений. Члены addition и multiplication имеют два ассоциативных значения, которые так же являются арифметическими выражениями. Эти ассоциативные значения делают возможным вложение выражений. Например, выражение (5 + 4) * 2 имеет цифру справа от умножения и другое выражение слева от умножения. Поскольку данные вложены, перечисление использующееся для хранения данных, также должно поддерживать вложенность-это означает, что перечисление должно быть рекурсивными. Приведенный ниже код показывает как работает рекурсивное перечисление ArithmeticExpression для (5 + 4) * 2:

let five = ArithmeticExpression.number(5)
let four = ArithmeticExpression.number(4)
let sum = ArithmeticExpression.addition(five, four)
let product = ArithmeticExpression.multiplication(sum, ArithmeticExpression.number(2))

Рекурсивные функции — самый простой путь работать с данными, которые имеют рекурсивную структуру. Например, ниже приведен пример, как функция вычисляет арифметическое выражение:

func evaluate(_ expression: ArithmeticExpression) -> Int {
    switch expression {
    case let . number(value):
        return value
    case let .addition(left, right):
        return evaluate(left) + evaluate(right)
    case let .multiplication(left, right):
        return evaluate(left) * evaluate(right)
    }
}
 
print(evaluate(product))
// Выведет "18"

Эта функция вычисляет простое число, просто возвращая ассоциативное значение. Она вычисляет сложение или умножение, вычисляя выражение по левую сторону, затем по правую сторону, затем складывает или умножает их.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Переход с Android на iPhone, iPad или iPod touch

Готовы перейти на iOS? Загрузите приложение «Перенос на iOS», чтобы получить помощь при переходе с устройства Android на новый iPhone, iPad или iPod touch.

 

Прежде чем начать

  • Убедитесь, что на устройстве Android включен Wi‑Fi.
  • Подключите новое устройство iOS и устройство Android к источнику питания.
  • Убедитесь, что содержимое, которое вы перемещаете, включая то, что находится на вашей внешней карте Micro SD, поместится на вашем новом устройстве iOS
  • . Если вы хотите перенести свои закладки Chrome, обновите Chrome до последней версии на своем устройстве Android.

 

Начало работы на устройстве Apple

Включите новое устройство Apple и поместите его рядом с устройством Android.

На устройстве Apple следуйте инструкциям по настройке на экране.

На экране быстрого запуска нажмите «Настроить вручную» и продолжайте следовать инструкциям на экране. Вас могут попросить активировать eSIM.

Нажмите «Переместить данные с Android»

Найдите экран «Приложения и данные». Затем нажмите «Переместить данные с Android». (Если вы уже завершили настройку, вам нужно стереть данные с устройства iOS и начать заново. Если вы не хотите стирать данные, просто перенесите контент вручную.) , откройте приложение «Перенос на iOS». Если у вас нет приложения «Переместить на iOS», вы можете нажать кнопку QR-кода на новом устройстве iOS и отсканировать QR-код с помощью камеры на устройстве Android, чтобы открыть магазин Google Play. Нажмите «Продолжить» и прочитайте появившиеся условия. Чтобы продолжить, нажмите «Согласен».

 

Дождитесь кода

На устройстве iOS нажмите «Продолжить», когда появится экран «Переместить с Android». Затем дождитесь появления десятизначного или шестизначного кода. Если на вашем Android-устройстве отображается предупреждение о слабом интернет-соединении, вы можете игнорировать это предупреждение.

 

Используйте код

Введите код на устройстве Android.

 

Подключение к временной сети Wi-Fi

Ваше устройство iOS создаст временную сеть Wi-Fi. При появлении запроса нажмите «Подключиться», чтобы присоединиться к этой сети на устройстве Android. Затем дождитесь появления экрана передачи данных.

 

На устройстве Android выберите контент, который хотите передать, и нажмите «Продолжить». Затем, даже если ваше устройство Android показывает, что процесс завершен, оставьте оба устройства в покое, пока не закончится полоса загрузки, которая появляется на вашем устройстве iOS. Держите свои устройства рядом друг с другом и подключенными к источнику питания, пока передача не завершится. Вся передача может занять некоторое время, в зависимости от того, сколько контента вы перемещаете.

Переносится следующее: контакты, история сообщений, фото и видео с камеры, фотоальбомы, файлы и папки, настройки специальных возможностей, настройки отображения, веб-закладки, учетные записи почты, сообщения и мультимедиа WhatsApp, а также календари. Если они доступны как в Google Play, так и в App Store, некоторые из ваших бесплатных приложений также будут перенесены. После завершения переноса вы можете скачать любые бесплатные приложения, которые были сопоставлены из App Store.

 

Настройте устройство iOS

После того, как на устройстве iOS исчезнет полоса загрузки, нажмите «Готово» на устройстве Android. Затем нажмите «Продолжить» на устройстве iOS и следуйте инструкциям на экране, чтобы завершить настройку устройства iOS.

 

Завершить

Убедитесь, что весь ваш контент перенесен. Музыку, книги и PDF-файлы необходимо перемещать вручную.

Нужно получить приложения, которые были на вашем устройстве Android? Перейдите в App Store на своем устройстве iOS, чтобы загрузить их.

 

Если вам нужна помощь с передачей

  • Убедитесь, что вы не трогаете оба устройства до завершения передачи. Например, на вашем устройстве Android приложение «Перенос на iOS» должно оставаться на экране все время. Если вы воспользуетесь другим приложением или получите телефонный звонок на Android до завершения передачи, ваш контент не будет передан.
  • На устройстве Android отключите приложения или настройки, которые могут повлиять на ваше подключение к Wi-Fi, например Sprint Connections Optimizer или Smart Network Switch. Затем найдите Wi-Fi в настройках, коснитесь и удерживайте каждую известную сеть и забудьте о сети. Затем повторите попытку переноса.
  • Перезагрузите оба устройства и повторите попытку.
  • На устройстве Android отключите передачу данных по сотовой сети. Затем повторите попытку передачи.

Если вам нужна помощь после передачи

Информация о продуктах, не производимых Apple, или независимых веб-сайтах, не контролируемых и не тестируемых Apple, предоставляется без рекомендации или одобрения. Apple не несет ответственности за выбор, работу или использование сторонних веб-сайтов или продуктов. Apple не делает никаких заявлений относительно точности или надежности сторонних веб-сайтов. Свяжитесь с продавцом для получения дополнительной информации.

Дата публикации:

Переместите данные с ПК с Windows на Mac

Используйте Помощник по миграции, чтобы перенести контакты, календари, учетные записи электронной почты и многое другое с ПК в соответствующие места на Mac.

Обновите и подключите свой Mac к ПК

Убедитесь, что на вашем Mac установлены последние обновления macOS, а на вашем ПК установлены последние обновления Windows.

Подключите свой Mac и ПК к одной и той же сети, например к домашней сети Wi-Fi. Или подключите кабель Ethernet между вашим Mac и ПК, чтобы создать прямое сетевое соединение. Вам может понадобиться адаптер Ethernet, например адаптер Belkin USB-C для Gigabit Ethernet или адаптер Apple Thunderbolt для Gigabit Ethernet.

Установите Ассистент миграции на свой ПК

Переместите свои данные

Теперь вы готовы переместить свои данные с вашего ПК на ваш Mac. Изображения «На вашем компьютере» ниже взяты из последней версии Ассистента миграции Windows, но они похожи на более ранние версии.

На ПК

  1. Откройте Ассистент миграции. Если какие-либо другие программы открыты, вас попросят выйти из них, прежде чем продолжить.
  2. Нажмите «Продолжить».
  3. Если Помощник по миграции обнаружит какое-либо из этих условий, он предупредит вас о них, прежде чем вы сможете продолжить:
    • Ваш компьютер настроен на автоматическую установку обновлений Windows.
    • Ваш компьютер использует сетевой брандмауэр, который может помешать вашему Mac подключиться к вашему ПК.
    • Ваш компьютер работает от батареи.
  4. При запросе разрешения на отправку данных об использовании приложения в Apple нажмите «Автоматически отправлять» или «Не отправлять».
  5. Когда Ассистент миграции начнет поиск вашего Mac и ожидает его подключения, выполните следующие шаги на своем Mac.

На вашем Mac

  1. Откройте Помощник по миграции, который находится в папке «Утилиты» вашей папки «Приложения».
  2. Следуйте инструкциям на экране, пока вас не спросят, как вы хотите передать свою информацию. Выберите вариант переноса с ПК с Windows, затем нажмите «Продолжить».
  3. Выберите значок, представляющий ваш компьютер, затем нажмите «Продолжить».

На вашем ПК

Убедитесь, что ваш ПК и Mac показывают один и тот же пароль, затем нажмите «Продолжить».

 

На вашем Mac

  1. Когда ваш Mac закончит сканирование файлов на вашем ПК, выберите информацию, которую вы хотите перенести на свой Mac. Возможно, вам придется прокрутить вниз, чтобы увидеть полный список. Узнайте больше о данных, которые вы можете передавать.
  2. Нажмите «Продолжить», чтобы начать передачу. Крупные переводы могут занять несколько часов.
  3. Когда закончите, войдите в новую учетную запись пользователя на вашем Mac. Учетная запись использует то же имя и пароль, что и учетная запись на вашем ПК.
  4. Авторизуйте свой Mac для покупок в iTunes Store. Это важно сделать перед синхронизацией или воспроизведением содержимого, загруженного из iTunes Store.

Если вам нужно перенести данные из другой учетной записи пользователя Windows, войдите в эту учетную запись на своем ПК и повторите эти шаги.

Какие данные перемещаются и куда?

  • Перенесено в приложение Почта на Mac:  Электронная почта и настройки электронной почты из Outlook и Почты Windows.
  • Перемещено в приложение Контакты: Контакты от людей (Windows 10 или более поздней версии), Outlook и папки «Контакты» в вашем домашнем каталоге.
  • Перемещено в приложение «Календарь»: Встречи из Календаря (Windows 10 или более поздней версии) и Outlook.
  • Перемещено в приложение «Напоминания»: Задачи из Outlook. Требуется переход на Mac с macOS Ventura.
  • Перемещено в приложения «Музыка», «Подкасты», «Книги» и «ТВ» соответственно:  Музыка, подкасты, аудиокниги, фильмы и телешоу.
  • Перемещено в Safari: Домашняя страница и закладки из Chrome, Edge, Firefox, Internet Explorer и Safari.
  • Перемещено в Системные настройки или Системные настройки: Пользовательские изображения рабочего стола, языковые настройки и настройки местоположения. Если Mac использует macOS Ventura, известные сети Wi-Fi также перемещаются.
  • Перемещено в вашу домашнюю папку: Документы и другие файлы из вашего домашнего каталога. И фотографии, которые вы можете добавить в приложение «Фотографии» вручную или разрешить программе «Фото» искать на вашем Mac фотографии для импорта.
  • Перемещено в общую папку вашей домашней папки: Несистемные файлы и документы с системного диска (обычно это диск C) и других доступных дисков. Требуется использовать Помощник по миграции при входе на ПК в качестве администратора.

Если у вас возникли проблемы с переносом данных

Вы можете использовать утилиту проверки диска (chkdsk) на своем ПК, чтобы проверить наличие проблем, которые могут помешать успешному переносу ваших данных.

  1. Щелкните правой кнопкой мыши кнопку «Пуск», затем выберите «Выполнить».
  2. Введите cmd и нажмите Enter. Откроется командная строка.
  3. В командной строке введите chkdsk и нажмите Enter.
  4. Если утилита обнаружит проблемы, введите chkdsk  диск : /F , где диск  – это буква, обозначающая загрузочный диск Windows, например C.
  5. Нажмите Enter.
  6. В командной строке введите Y , затем перезагрузите компьютер.
Автор записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *