ios - 初始化时 Swift 额外参数

标签 ios swift object ios8

我正在尝试创建一个将数据保存到 CloudKit 的应用程序,我已经对所有内容进行了排序,但是当尝试初始化一个新对象时,我在初始化错误时得到了一个额外的参数。

错误代码:

func submitTask(){
    var task: Task
    task = CloudKitTask(task: Task){
        task.shortDescription = self.txtShortDesc.text!
        task.type = self.txtType.text!
        task.reminder = self.txtReminder.text!
        task.priority = self.txtPriority.text!
        task.dueTime = self.txtDueTime.text!
        task.dueDate = self.txtDueDate.text!
        task.completed = "False"
        task.className = self.txtClass.text!
        task.additionalDetails = self.txtDetails.text
    }
    print(task)
}

错误:调用任务中的额外参数“任务”= CloudK...行

任务类:

protocol Task {
var id: String? { get }
var shortDescription: String { get set }
var className: String { get set }
var type: String { get set }
var dueDate: String { get set }
var dueTime: String { get set }
var priority: String { get set }
var reminder: String { get set }
var completed: String { get set }
var additionalDetails: String { get set }
}

class CloudKitTask: Task {
let record: CKRecord

init(record: CKRecord){
    self.record = record
}

init(task: Task){
    record = CKRecord(recordType: "Task")
    shortDescription = task.shortDescription
    className = task.className
    type = task.type
    dueDate = task.dueDate
    dueTime = task.dueTime
    priority = task.priority
    reminder = task.reminder
    completed = task.completed
    additionalDetails = task.additionalDetails

}

var className: String {
    get {
        return record.objectForKey("ClassName") as! String
    }
    set {
        record.setObject(newValue, forKey: "ClassName")
    }
}

var completed: String {
    get {
        return record.objectForKey("Completed") as! String
    }
    set {
        record.setObject(newValue, forKey: "Completed")
    }
}

var dueDate: String {
    get {
        return record.objectForKey("DueDate") as! String
    }
    set {
        record.setObject(newValue, forKey: "DueDate")
    }
}

var dueTime: String {
    get {
        return record.objectForKey("DueTime") as! String
    }
    set {
        record.setObject(newValue, forKey: "DueTime")
    }
}

var priority: String {
    get {
        return record.objectForKey("Priority") as! String
    }
    set {
        record.setObject(newValue, forKey: "Priority")
    }
}

var reminder: String {
    get {
        return record.objectForKey("Reminder") as! String
    }
    set {
        record.setObject(newValue, forKey: "Reminder")
    }
}

var shortDescription: String {
    get {
        return record.objectForKey("ShortDescription") as! String
    }
    set {
        record.setObject(newValue, forKey: "ShortDescription")
    }
}

var type: String {
    get {
        return record.objectForKey("Type") as! String
    }
    set {
        record.setObject(newValue, forKey: "Type")
    }
}

var additionalDetails: String {
    get {
        return record.objectForKey("AdditionalDetails") as! String
    }
    set {
        record.setObject(newValue, forKey: "AdditionalDetails")
    }
}

var id: String? {
    return record.recordID.recordName
}

var createdAt: NSDate {
    return record.creationDate!
}

var lastModifiedAt: NSDate {
    return record.modificationDate!
}
}

我对使用 Swift 进行编程还很陌生,似乎找不到解决我问题的答案,如果你知道我做错了什么或者我能做些什么来解决它,请给我指出正确的方向非常感谢您的帮助。

如果您需要查看我的更多代码,请询问...

最佳答案

您在这里的意思可能是在不首先创建 CKRecord 的情况下构造一个 CloudKitTask。在那种情况下,你应该有一个初始化程序:

convenience init() {
    self.init(record: CKRecord(recordType: "Task"))
}

然后就可以使用了:

func submitTask(){
    let task = CloudKitTask()
    task.shortDescription = self.txtShortDesc.text!
    task.type = self.txtType.text!
    task.reminder = self.txtReminder.text!
    task.priority = self.txtPriority.text!
    task.dueTime = self.txtDueTime.text!
    task.dueDate = self.txtDueDate.text!
    task.completed = "False"
    task.className = self.txtClass.text!
    task.additionalDetails = self.txtDetails.text
    print(task)
}

关于ios - 初始化时 Swift 额外参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32467693/

相关文章:

android - 如何为跨平台PhoneGap/Cordova应用执行即席对等WiFi发现?

javascript - react-native:导入后找不到变量样式表

ios - MKReverseGeocoder 更新文本字段

ios - 所有 GraphQL 标量都以字符串形式出现 (Apollo)

Javascript调用其他对象方法

android - 无法构建项目 ionic ios 和 android

ios - 多个 UIView 动画

swift - AWS Cognito/从 sub 获取用户信息

javascript - 为什么我的 HTML 构造函数对象返回 [object Object] 而不是 [HTMLElementElement]?

javascript - 如何仅返回具有目标参数的对象?