Sample CodetvOSReviewed 2026-07-21View on Apple Developer

Binding JSON data to TVML documents

At a glance

Item Summary
Purpose Create full-fledged TVML documents by using data binding and queries on simplified TVML files.
App architecture A JavaScript, Swift sample centered on AppDelegate, with direct use of DataBindings, TVMLKit, UIKit.
Main patterns Delegate or data-source callbacks
Project style 4 scanned source file(s) across JavaScript, Swift, organized around ranked entry, type, and file boundaries.
Execution model No structured execution marker indexed; callback threading requires source review.
State/event model No structured observation or publisher-scheduling marker indexed.
Key frameworks/packages XCTest, DataBindings, TVMLKit, UIKit; these are source dependencies, not architecture labels.

Project structure

Source bundle/
├── DataBindings/
│   ├── DataBindings/
│   │   ├── application.js
│   │   ├── AppDelegate.swift
│   │   └── Info.plist
│   ├── DataBindingsTests/
│   │   ├── DataBindingsTests.swift
│   │   └── Info.plist
│   ├── DataBindingsUITests/
│   │   ├── DataBindingsUITests.swift
│   │   └── Info.plist
│   └── DataBindings.xcodeproj/
│       ├── .xcodesamplecode.plist
│       └── project.pbxproj
└── Configuration/
    └── SampleCode.xcconfig

Structure observations

  • Architecturally prominent files are ranked from entry points and role-named declarations; resource-only paths are omitted.
  • Primary languages: JavaScript, Swift.
  • The verified tree contains 6 project/configuration file(s) and 3 source declaration(s).

Overall architecture

Reference code

DataBindings/DataBindings/AppDelegate.swift:11 — architecture anchor

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, TVApplicationControllerDelegate {
    // ...
    var window: UIWindow?
    // ...
}

Interpretation

The arrows summarize the source-visible entry, role-named types or folders, and framework direction; when nodes come from structural folders, the sequence is a high-level interpretation rather than proof that every adjacent node calls the next. Ownership is claimed only where the next section cites a stored property or assignment. The diagram is intentionally limited to the dominant path into TVMLKit JS.

Ownership and state

Ownership evidence

DataBindings/DataBindings/application.js:11 — stored dependency or nearest verified ownership anchor

    var xhr = new XMLHttpRequest();
Owner Object or state Relationship Mutation authority
application XMLHttpRequest (xhr) creates and retains App/module collaborators
application XMLHttpRequest (templateXHR) creates and retains App/module collaborators
application DataItem (objectItem) creates and retains Initialized by the owner; the binding is immutable
AppDelegate UIWindow (window) stores or receives App/module collaborators

Composition arrows indicate a source-visible construction expression or locally owned value state; aggregation means the owner stores or receives a dependency without proving exclusive lifetime ownership.

Concurrency, scheduling, and thread safety

Evidence limit: actor isolation, async/await, or Task creation does not by itself prove background-thread execution; Sendable conformance alone does not prove thread-safe mutation.

No source-visible execution, scheduling, or synchronization boundary was found in the indexed source.

@MainActor/MainActor.run, DispatchQueue.main, and RunLoop.main are reported as distinct isolation, queue, and event-loop mechanisms. A plain Task is kept separate from Task.detached; neither is labeled as a background thread.

State propagation, frameworks, and dependencies

Evidence limit: an import proves a source-level compilation dependency at the cited line; it does not prove runtime use, architectural adoption, or whether a Swift package is a direct application dependency.

Category Mechanism or module Verified role Evidence
Source import XCTest The cited file imports this module; runtime use and architectural role are not inferred. DataBindings/DataBindingsTests/DataBindingsTests.swift:7
Source import DataBindings The cited file imports this module; runtime use and architectural role are not inferred. DataBindings/DataBindingsTests/DataBindingsTests.swift:8
Source import TVMLKit The cited file imports this module; runtime use and architectural role are not inferred. DataBindings/DataBindings/AppDelegate.swift:9
Source import UIKit The cited file imports this module; runtime use and architectural role are not inferred. DataBindings/DataBindings/AppDelegate.swift:8

receive(on:) describes downstream delivery scheduling, while subscribe(on:) describes upstream subscription/request/cancel scheduling. An import Combine alone establishes neither behavior nor a Store, reducer, Redux, or other application architecture.

Class and protocol design

DataBindings/DataBindings/AppDelegate.swift:12 — representative type boundary

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, TVApplicationControllerDelegate {
    // ...
    var window: UIWindow?
    // ...
}
Type Responsibility Depends on or conforms to
AppDelegate Receives callback-driven events UIResponder, UIApplicationDelegate, TVApplicationControllerDelegate
DataBindingsTests Owns feature behavior and collaborator lifecycle XCTestCase
DataBindingsUITests Owns feature behavior and collaborator lifecycle XCTestCase

No local protocol conformance is claimed as protocol-oriented design; external framework conformances are listed only as dependencies.

Access control

Symbol Access Verified effect Likely rationale
AppDelegate (DataBindings/DataBindings/AppDelegate.swift:12) implicit internal No explicit modifier means the Swift declaration is internal to the module. Inference: app-target collaboration needs no exported library surface.
DataBindingsTests (DataBindings/DataBindingsTests/DataBindingsTests.swift:10) implicit internal No explicit modifier means the Swift declaration is internal to the module. Inference: app-target collaboration needs no exported library surface.
DataBindingsUITests (DataBindings/DataBindingsUITests/DataBindingsUITests.swift:10) implicit internal No explicit modifier means the Swift declaration is internal to the module. Inference: app-target collaboration needs no exported library surface.

Reference code

DataBindings/DataBindings/AppDelegate.swift:12 — representative boundary

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, TVApplicationControllerDelegate {
    // ...
    var window: UIWindow?
    // ...
}

Swift declarations without a modifier are internal; explicit private, fileprivate, private(set), public, or open entries above are interpreted by language semantics. Objective-C/C samples instead rely on header and implementation boundaries, which are not equivalent to Swift lexical privacy.

Logic ownership and placement

Logic Owning type or file Placement rationale
Receives callback-driven events AppDelegate The source’s Delegate suffix makes this role explicit.

Design patterns

Pattern Source evidence Purpose or tradeoff
Delegate or data-source callbacks DataBindings/DataBindings/AppDelegate.swift:12 Callback protocols invert event delivery back into the sample’s owner.

Naming conventions

  • Types: Delegate: AppDelegate.
  • Protocols: no local protocol declaration in the scanned source.
  • Methods: getTemplate, getJson, insertJson, loadTemplate, pushDoc, executeRemoteMethod, application, applicationWillResignActive.
  • Files: DataBindings/DataBindings/AppDelegate.swift, DataBindings/DataBindingsTests/DataBindingsTests.swift, DataBindings/DataBindingsUITests/DataBindingsUITests.swift.

Architecture takeaways

  • AppDelegate is the main source-visible entry or composition anchor for this sample.
  • Framework work reaches DataBindings, TVMLKit, UIKit through a deliberately small high-level chain; the detailed API graph remains inside the cited implementation files.
  • Stored-property evidence identifies lifecycle collaboration; it does not by itself prove exclusive object ownership.
  • Access-control conclusions separate verified language visibility from the likely design rationale.
  • The source does not justify labeling the design protocol-oriented.

Source map

Source file Relevant symbols
DataBindings/DataBindings/AppDelegate.swift Cited implementation, AppDelegate, TVMLKit, UIKit
DataBindings/DataBindings/application.js Cited implementation, Feature implementation
DataBindings/DataBindingsTests/DataBindingsTests.swift DataBindingsTests, XCTest, DataBindings
DataBindings/DataBindingsUITests/DataBindingsUITests.swift DataBindingsUITests