Как анализировать данные NFC типа U

Я думаю, если вам нужны нормализованные таблицы данных - вам нужно попробовать другие решения для баз данных.

Но у меня есть решение о разрешении для MOngo на Git Кстати , вставляет код - у него есть имя фильма, но идентификатор фильма noi.

Проблема

У вас есть коллекция Актеров с массивом фильмов, которые они сделали.

Вы хотите создать коллекцию фильмов с массивом Актеров в каждом.

Некоторые данные образца

 db.actors.insert( { actor: "Richard Gere", movies: ['Pretty Woman', 'Runaway Bride', 'Chicago'] });
 db.actors.insert( { actor: "Julia Roberts", movies: ['Pretty Woman', 'Runaway Bride', 'Erin Brockovich'] });

Решение

Нам нужно прокрутить каждый фильм в документе Actor и выдать каждый фильм по отдельности.

Улов здесь находится в фазе уменьшения. Мы не можем испускать массив из фазы уменьшения, поэтому мы должны построить массив Actors внутри возвращаемого документа «value».

Код

map = function() {
  for(var i in this.movies){
    key = { movie: this.movies[i] };
    value = { actors: [ this.actor ] };
    emit(key, value);
  }
}

reduce = function(key, values) {
  actor_list = { actors: [] };
  for(var i in values) {
    actor_list.actors = values[i].actors.concat(actor_list.actors);
  }
  return actor_list;
}

Обратите внимание, что actor_list - это фактически объект javascript, который содержит массив. Также обратите внимание, что карта испускает ту же структуру.

Запустите следующую команду, чтобы выполнить карту / уменьшить, вывести ее в коллекцию «pivot» и напечатать результат:

printjson (db. actors.mapReduce (карта, уменьшить, «поворот»)); db.pivot.find (). forEach (printjson);

Вот пример вывода, обратите внимание, что у «Pretty Woman» и «Runaway Bride» есть как «Richard Gere», так и «Julia Roberts».

{ "_id" : { "movie" : "Chicago" }, "value" : { "actors" : [ "Richard Gere" ] } }
{ "_id" : { "movie" : "Erin Brockovich" }, "value" : { "actors" : [ "Julia Roberts" ] } }
{ "_id" : { "movie" : "Pretty Woman" }, "value" : { "actors" : [ "Richard Gere", "Julia Roberts" ] } }
{ "_id" : { "movie" : "Runaway Bride" }, "value" : { "actors" : [ "Richard Gere", "Julia Roberts" ] } }

0
задан P S 17 January 2019 в 14:54
поделиться

1 ответ

Вы можете использовать Data напрямую, нет необходимости использовать String шестнадцатеричное преобразование.

func parseURINFC(_ data: Data) -> String? {
    let prefix = data.prefix(1)
    let rest = data.dropFirst(1)

    switch prefix {
    case Data(bytes: [0x00]):
        return nil
    case Data(bytes: [0x01]):
        guard let restString = String(data: rest, encoding: .utf8) else { return nil }
        return "http://www." + restString
    case Data(bytes: [0x02]):
        guard let restString = String(data: rest, encoding: .utf8) else { return nil }
        return "https://www." + restString
    case Data(bytes: [0x03]):
        guard let restString = String(data: rest, encoding: .utf8) else { return nil }
        return "http://" + restString
    case Data(bytes: [0x04]):
        guard let restString = String(data: rest, encoding: .utf8) else { return nil }
        return "https://" + restString
    case Data(bytes: [0x05]):
        guard let restString = String(data: rest, encoding: .utf8) else { return nil }
        return "tel://" + restString
    case Data(bytes: [0x06]):
        guard let restString = String(data: rest, encoding: .utf8) else { return nil }
        return "mailto://" + restString
    case Data(bytes: [0x07]):
        guard let restString = String(data: rest, encoding: .utf8) else { return nil }
        return "ftp://anonymous:anonymous@" + restString
    case Data(bytes: [0x08]):
        guard let restString = String(data: rest, encoding: .utf8) else { return nil }
        return "ftp://ftp." + restString
    default:
        return nil
    }
}

Что касается префикса 006- или 007-, то по указанной вами ссылке ( http://austinblackstoneengineering.com/nfc-p2p-basics/ ) он недействителен. Событие после попытки конвертировать остальное с использованием UTF8 (как и должно быть, так как это URI) возвращает nil.

0
ответ дан Larme 17 January 2019 в 14:54
поделиться
Другие вопросы по тегам:

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