Swift如何修复Target Membership的错误?

时间:2017-12-06 10:22:02

标签: ios swift xcode

我是Swift的初学者,我不知道所有的细节,所以如果这是一个愚蠢的问题,请原谅

我的应用程序处于相当高级的开发阶段,因此我希望尽可能少地混淆现有代码。我的问题是我想在我的应用程序中实现Today Extension,在其中我想显示一个tableView,它将显示来自我的“Plum”类的单个数组的数据,我需要一个方法来处理选择。不幸的是,当我将Plum的目标成员身份更改为TodayExtension时,会显示一大堆错误,因为来自该类的许多API不可用于TodayExtension。该类继承自AVAudioPlayer,因此大多数基本方法在Extension中不可用。 我试图创建一个帮助类,它将从Plum获取数组并将其返回到我的TableView但由于“使用未解析的标识符'Plum'”仍然无效

如何获取数组并使用该方法?

2 个答案:

答案 0 :(得分:2)

我认为在添加今日扩展时你可能会有一些今天扩展的课程,

您可以使用App Group with User Defaults功能将数据从iOS应用程序传输到今天的Extension类

1)要设置数据,您可以使用

var defaults: NSUserDefaults = NSUserDefaults(suiteName: <GroupID>)!
defaults.setObject(<YourArray, forKey:<KeyName>)

2)在今天扩展目标的类中,您可以像这样获取该数组

var defaults: NSUserDefaults = NSUserDefaults(suiteName: <GroupID>)!
var <YourArray> = defaults.stringForKey(<KeyName>)

注意:这只是伪代码可能包含错误

答案 1 :(得分:0)

在今天的扩展中添加Plum类是个坏主意。扩展名应该是轻量级的,您只需要传输所需的数据。

在您的情况下,您可能需要标题和说明数组。因此,形成一个包含所需详细信息的字典数组,并将这些详细信息存储在App组用户默认值中,如@Hitesh answer。

在今天的扩展类中,从用户默认值中读取此数组,然后在表视图中显示详细信息。