2016-10-05 6 views
2

Swift предлагает как Data, так и [UInt8] типы, которые делают очень похожие вещи.Данные против [UInt8]

  • В чем разница между этими двумя?
  • При разработке новых API, какой предпочтительный тип?
+1

Я бы сказал, что 'Data' (~' NSData') являются объектами и предоставляют множество методов, которые могут быть полезны. Но это зависит от того, нужны они вам или нет. – Larme

ответ

3

- по существу байт-массив, байт (как я уверен, вы знаете) состоит из 8 бит. Хотя NSData - это не просто массив байтов, то в глубине его базовая структура основана на одном. Вы можете легко конвертировать между ними, например, с помощью таких методов, как data.bytes.

Что касается проектирования API-интерфейсов, я лично рекомендовал бы вам их проектировать с помощью NSData просто из-за всей дополнительной функциональности, которую он предлагает по простому байтовому массиву. Apple уже много сделала для вас, поэтому зачем это делать снова?

+0

Является ли 'Data' чем-то, что нам предлагается использовать или просто для взаимодействия с частями ObjC? У вас есть популярные библиотеки, которые используют 'Data' vs' [UInt8] '? – Etan

+0

Что относительно приложений Linux, которые не используют части ObjC? Для них популярна 'Data'? – Etan

+0

NSData - это просто способ представления двоичных данных iOS/OSX. Фактически данные обмена между приложением и вашим бэкендом обычно являются строкой, закодированной в base64. NSData можно легко преобразовать в это с помощью 'data.base64EncodedStringWithEncoding (NSUTF8StringEncoding)' –