На ранней стадии разработки iOS нам могут понадобиться некоторые фиктивные данные или сгенерированные данные для подачи пользовательского интерфейса. И есть несколько замечательных JS-библиотек, которые мы можем использовать для ускорения разработки под iOS. В этой истории я возьму faker.js в качестве примера, чтобы показать вам, как использовать JS-код в Swift.

Что такое faker.js

faker.js — генерировать огромное количество поддельных данных в браузере и node.js

faker.js — это отличная коллекция общих данных, таких как страна, имя пользователя, адрес электронной почты, аватар и т. д.

name: firstName, lastName, findName, jobTitle, gender, prefix, suffix, title, jobDescriptor, jobArea, jobType
address: zipCode, zipCodeByState, city, cityPrefix, citySuffix, streetName, streetAddress, streetSuffix, streetPrefix, secondaryAddress, county, country, countryCode, state, stateAbbr, latitude, longitude, direction, cardinalDirection, ordinalDirection, nearbyGPSCoordinate, timeZone
image: avatar, imageUrl, abstract, animals, business, cats, city, food, nightlife, fashion, people, nature, sports, technics, transport, dataUri, lorempixel, unsplash, lorempicsum
phone: phoneNumber, phoneNumberFormat, phoneFormats
random: number, float, arrayElement, arrayElements, objectElement, uuid, boolean, word, words, image, locale, alpha, alphaNumeric, hexaDecimal
commerce: color, department, productName, price, productAdjective, productMaterial, product, productDescription
company: suffixes, companyName, companySuffix, catchPhrase, bs, catchPhraseAdjective, catchPhraseDescriptor, catchPhraseNoun, bsAdjective, bsBuzz, bsNoun
date: past, future, between, recent, soon, month, weekday
finance: account, accountName, routingNumber, mask, amount, transactionType, currencyCode, currencyName, currencySymbol, bitcoinAddress, litecoinAddress, creditCardNumber, creditCardCVV, ethereumAddress, iban, bic, transactionDescription
internet: avatar, email, exampleEmail, userName, protocol, url, domainName, domainSuffix, domainWord, ip, ipv6, userAgent, color, mac, password
lorem: word, words, sentence, slug, sentences, paragraph, paragraphs, text, lines
...and more

В JS вы можете использовать faker.js для генерации случайных данных.

//javascript
const faker = require('faker');

const randomCountry = faker.address.country();
const randomEmail = faker.internet.email();

Случай перечисления в сопоставлении Swift с именем функции в JS

Чтобы использовать его в Swift, первым делом нужно импортировать библиотеку js в JSContext с фреймворком JavaScriptCore. Поскольку в JContext нет переменных window и глобальных, нам нужно создать global с текущим контекстом.

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

Как генерировать данные в Swift?

Когда мы вызываем случайноевычисляемое свойство перечисления case, оно просто делегирует задание подделке JS через JS через JContext.

//swift
let randomCountry = Faker.Address.country.random

Мы полностью примем эту JS-библиотеку, если продолжим сопоставлять дополнительные перечисления с поддельным JS. Теперь, с сгенерированными данными, мы можем освободить себя, чтобы наполнить пользовательский интерфейс, не дожидаясь готовности внутреннего API.