It's not a good choice. The actual file data is going to be in an unknown file format, unless you archive a property list, in which case you're going to have to create an in-memory near-duplicate of your custom-class-based data structure. You also have to worry about architecture dependencies (number of bytes per int, byte order, etc). And this is likely to be a fairly inefficient format, in ways that you can't directly improve.
Generally, my advice is to generally regard API that takes file paths as obsolescent, since all modern APIs have a URL form. In this case, there is a writeToURL method too, but you can tell that it is also obsolescent because it has no outError parameter (or, in Swift, does not throw an error).
API like NSArray's writeToFile/writeToURL is appropriate for pushing data to files temporarily during the execution of your app, and it's not very suitable for longer term saves. Avoid them otherwise.
Again, I think the recursive class reference is the least of your difficulties. Designing an approach that is robust and future-proof is much harder.
How about serializing your object properties into JSON, using nested JSON dictionaries for the recursion, then writing the JSON to disk as UTF-8 text? The class you've shown should be simple enough to convert manually, or poke around github (etc) for open source code that assists in this sort of task.