Search code examples
swiftswift4swift5swift4.1

How to test for undefined array?


I am using this line of code

let transactions = SKPaymentQueue.default().transactions

This is what Apple amazing docs has to say about transactions.

enter image description here

What is exactly "undefined"? How do I test transactions before proceeding in code?

I have an observed attached to the payment queue.

I can guarantee you that undefined is not nil, because I have tested for nil and Xcode whined with an error

Comparing non-optional value of type '[SKPaymentTransaction]' to 'nil' always returns false

is undefined the new "empty array"? If not, how do I test for that?


Solution

  • Undefined means literally that: the API does not define what the framework will do. Anything is "fair game".

    The code might cause a fatal error, return an empty array, or trigger a workflow to send a postcard to you in the mail. It's not defined.

    However, no matter what the current behaviour happens to be, you shouldn't depend on it. It might return an empty array today, but crash tomorrow. Because the API explicitly documents the behaviour as undefined, Apple is free to change implementation details, without them counting as "API breaking changes".