从服务器上的文本实例化Swift类

问题描述 投票:2回答:1

我有一个iOS应用程序,我想在其中实现订阅模型。但是,用户购买的项目需要我经常编写新的Swift类。

我很乐意不必依赖用户更新应用程序来查看新内容。有没有办法在构建时从任意文本文件实例化一个类,我可以从服务器部署它?

编辑:自从阅读你的评论后我回到现实,但我还会添加一些代码来澄清我的用例。也许我还缺少另一种解决方案。

本质上,此应用程序中的“资产”是算法生成的音乐片段。因此,项目可能包含连接在一起的AudioKit节点。我可能有这样一个类:

class sawtooth:sound {
    var pwmOscillator:AKPWMOscillator? // = AKTable(.sawtooth, count: 4_096)
    var countDownToNextPitch:Double
    var sawtoothTwo:AKTable
    var oscillatorTwo:AKOscillator
    var lpf:AKLowPassFilter

    // ... instantiate more nodes and parameters
    init (filterFactor: Double) {
        self.pwmOscillator = AKPWMOscillator(frequency: 32.7031956626)
        self.pwmOscillator?.pulseWidth = 0.2
        self.sawtoothTwo = AKTable(.sawtooth, count: 4_096)
        self.oscillatorTwo = AKOscillator(waveform: sawtoothTwo)
        self.oscillatorTwo.frequency = 65.4063913251
        self.oscillatorTwo.amplitude = 0
        self.chorusMixer = AKMixer(self.pwmOscillator!, self.oscillatorTwo)
       // ...etc.
    }

    func behavior(atTime:Double, withProgramInstance:program) {
        // Add parameters that define how sound evolves with time
    }
}

在不需要硬更新的情况下部署其中一些内容会很棒。但如果这是不可能的,那是不可能的。

ios swift
1个回答
1
投票

即使您使用的是订阅模式,您的应用也必须拥有提供优质内容所需的一切。我看到的唯一解决方案是在客户端建立可由服务器端配置的模型。简化:

考虑您有用户购买时要启用的资产。假设你有一个像这样的模型类

class Asset {
    var id: Int
    var nodes: [MyNode]

    func connect(to: SomeObject) {
      {...} //Some nodes related logic etc 
    }
}

class MyNode {
    var type: MyNodeType
    var oscillator: Oscillator
    var {...}
}

基本上,您所做的是从后端获取资产的配置,例如在JSON中。然后,您只需从此配置文件创建对象。没有必要对应用程序中的所有内容进行硬编码,您只需要为节点提供适当的可重用模型。你可以从服务器获得。

© www.soinside.com 2019 - 2024. All rights reserved.