缺少论点' toptext'用于呼叫中的参数

时间:2017-06-06 15:13:43

标签: swift struct

import UIKit
import Foundation

struct MemeModel{
    var topText:String
    var bottomText:String
    var originalImage:UIImage!
    var memedImage:UIImage
   }

struct MemeCollection{

    func getMemeStorage() ->AppDelegate{
        let appDelegate = UIApplication.shared.delegate
        return appDelegate as!AppDelegate
    }

    //get memeModel count number
    func count() ->Int{
        return getMemeStorage().memes.count
    }

    //append meme
    func addMeme(Meme meme:MemeModel){
        print("meme added")
        getMemeStorage().memes.append(meme)
        print(getMemeStorage().memes.count)
    }

    //getMeme
    func getMeme(index:Int)->MemeModel{
        return getMemeStorage().memes[index]
    }

 }

当我在MemeModel中以这种方式声明detailViewcontroller时:

var detailmemecontroller = MemeModel()

编译器抱怨如下:

  

缺少参数' toptext'用于呼叫中的参数。

如果我以这种方式声明memeCollection,则不会抱怨:

var memeCollection = Memecollection()

我需要做什么?

https://github.com/zetaosun/Udacity_meme

1 个答案:

答案 0 :(得分:0)

MemeCollection没有必填变量,MemeModel有4个必填变量topTextbottomText originalImagememedImage。因此,如果您在MemeCollection中添加任何必填变量,那么您也会遇到相同的错误。

修复MemeModel的错误。你有两个选择。

选项1 要么像这样传递所有必需参数。

var detailmemecontroller = MemeModel(topText: "", bottomText: "", originalImage: UIImage.init(), memedImage: UIImage.init())

选项2 使所有变量成为选项。

struct MemeModel{
    var topText:String?
    var bottomText:String?
    var originalImage:UIImage?
    var memedImage:UIImage?
}