Implement RCTConvertOptionalVecToArray(const folly::Optional<ContainerT> &vec)

Summary:
There are two implementations of `RCTConvertVecToArray`. The first implementation:

```
template<typename ContainerT>
NSArray *RCTConvertVecToArray(const ContainerT &vec, id (^convertor)(typename ContainerT::value_type element))
{
  NSMutableArray *array = [NSMutableArray new];
  for (size_t i = 0, size = vec.size(); i < size; ++i) {
    id object = convertor(vec[i]);
    array[i] = object ?: (id)kCFNull;
  }
  return array;
}
```
The purpose of the second implementation is to default the convertor function to the identify function:
```
template<typename ContainerT>
NSArray *RCTConvertVecToArray(const ContainerT &vec)
{
  return RCTConvertVecToArray(vec, ^id(typename ContainerT::value_type element) { return element; });
}
```

Meanwhile, there's only one implementation of `RCTConvertOptionalVecToArray`:

```
template<typename ContainerT>
NSArray *RCTConvertOptionalVecToArray(const folly::Optional<ContainerT> &vec, id (^convertor)(typename ContainerT::value_type element))
{
  return vec.hasValue() ? RCTConvertVecToArray(vec.value(), convertor) : nil;
}
```

In this diff, I overload `RCTConvertOptionalVecToArray` to default the convertor to the identify function.

Changelog:

[iOS][Added] - Added RCTConvertOptionalVecToArray with default converter

Reviewed By: PeteTheHeat

Differential Revision: D18148891

fbshipit-source-id: d7d5f05cda06c9fa5374334ec4e9dbbd8b6d2eba
This commit is contained in:
Ramanpreet Nara 2019-11-04 15:58:49 -08:00 коммит произвёл Facebook Github Bot
Родитель 3beb8341fd
Коммит c29ec64d94
1 изменённых файлов: 6 добавлений и 0 удалений

Просмотреть файл

@ -40,6 +40,12 @@ NSArray *RCTConvertOptionalVecToArray(const folly::Optional<ContainerT> &vec, id
return vec.hasValue() ? RCTConvertVecToArray(vec.value(), convertor) : nil;
}
template<typename ContainerT>
NSArray *RCTConvertOptionalVecToArray(const folly::Optional<ContainerT> &vec)
{
return vec.hasValue() ? RCTConvertVecToArray(vec.value(), ^id(typename ContainerT::value_type element) { return element; }) : nil;
}
bool RCTBridgingToBool(id value);
folly::Optional<bool> RCTBridgingToOptionalBool(id value);
NSString *RCTBridgingToString(id value);