2014-12-27 31 views
0

我是Swift新手,目前正在使用子类化。我试图实现的是简单地通过继承存储的属性到现有的类,然后将现有的实例从类中复制到子类中。 我与MPMediaEntity想这一点,并子类这样说:Swift - 将MPMediaEntity实例复制到子类中

class MPMediaEntityWithMyString: MPMediaEntity{ 

    var myString:String = "" 
} 

然后拿到MPMediaEntities列表我简单地做:

// Get all the songs in an array 
let mediaItems = MPMediaQuery.songsQuery().items 
// Go through each song, make a copy of it as MPMediaEntityWithMyString 
// and modify the myString property 
for song in mediaItems{ 
    // This is where I stall. How do I copy the MPMediaEntity into the MPMediaEntityWithMyString? It moans about it not being convertible 
    var songCopy:MPMediaEntityWithMyString = song 
    songCopy.myString = "testing!" 
    println(songCopy.myString) 
} 

我在做什么这显然是错误的?

回答

0

不知道你的整个项目,我会使用,而不是组成继承建议。这意味着你创建了一个类(或者一个结构更合适),它拥有MPMediaEntity的属性和另一个String类型的属性。

这有效地将您的自定义数据对象从任何其他类的凌乱继承树中分离出来。

0

你不能。该BaseClass的参考可以有子类refrence,但你不能分配在SubClass.Subclass的BaseClass的refrence有一些额外的属性和行为,所以你不能BaseClass的refrence分配给SubClass.You已经做

let mediaItems = MPMediaEntityWithMyString.songsQuery().items 

但这些项目应该是MPMediaEntityWithMyString的类型而不是MPMediaQuery。其他

一种选择是你可以使用的composition代替inheritance

class MPMediaEntityWithMyString { 
    var mediaItem:String? 
    var myString:String = "" 
} 
相关问题