arrays - 无法调用类型 : with an argument list of type: 的初始值设定项

标签 arrays swift initialization

对我做错了什么有什么建议吗?初始化对象时,我似乎无法将另一个类的数组作为参数。这是我的具体情况:

我正在尝试创建一个锻炼应用程序。该应用程序包含几种不同的锻炼。每项锻炼都有其独特的一系列练习。

我有 WorkoutObj 的代码(该结构创建一个锻炼并需要 NSArray WorkoutDrillSet)

import UIKit

struct WorkoutObj {

var workoutType: NSString
var workoutNumber: Int
var workoutDesc: NSString
var workoutDuration: Int
var workoutDrillSet: NSArray

init(type: String, number: Int, duration: Int, desc: String, drillSet: NSArray)
{
    workoutType = type
    workoutNumber = number
    workoutDuration = duration
    workoutDesc = desc
    workoutDrillSet = drillSet
}

}

这是我的 DrillObjects(此结构是钻取数组将包含的对象 - 换句话说,钻取数组将包含 DrillObject1、DrillObject2、DrillObject3 等)

import UIKit

struct DrillObject {

var drillDesc: NSString
var drillDurationMin: Int
var drillDurationSec: Int
var drillHRZone: Int
var drillEffort: Int
var drillCadence: Int

init(M: Int, S: Int, hRZone: Int, effort: Int, cadence: Int, name: NSString)
{
    drillDesc = name
    drillDurationMin = M
    drillDurationSec = S
    drillHRZone = hRZone
    drillEffort = effort
    drillCadence = cadence
}

}

我的下一个类是我的 EDrills 课。该类将每个 DrillObject 放入一个数组中。创建的数组称为 arrayE1Drills

import UIKit

class EDrills: NSObject {

let dE1: DrillObject
let dE2: DrillObject
let dE3: DrillObject
let dE4: DrillObject
let dE5: DrillObject
let dE6: DrillObject
let dE7: DrillObject
let dE8: DrillObject
let dE9: DrillObject
let dE10: DrillObject
let dE11: DrillObject
let dE12: DrillObject
let dE13: DrillObject
let dE14: DrillObject

var arrayE1Drills : [DrillObject]


override init()
{
    dE1 = DrillObject ( M: 5, S: 0,  hRZone: 2, effort: 8, cadence: 95, name: "W/U Pedal Easy @ 90 RPM")

    dE2 = DrillObject ( M: 0, S: 30, hRZone: 2, effort: 10, cadence: 95, name: "W/U Stand")
    dE3 = DrillObject ( M: 0, S: 30, hRZone: 2, effort: 10, cadence: 95, name: "W/U Sit")

    dE4 = DrillObject ( M: 0, S: 30, hRZone: 2, effort: 10, cadence: 95, name: "W/U Stand")
    dE5 = DrillObject ( M: 0, S: 30, hRZone: 2, effort: 10, cadence: 95, name: "W/U Sit")

    dE6 = DrillObject ( M: 0, S: 30, hRZone: 2, effort: 10, cadence: 95, name: "W/U Stand")
    dE7 = DrillObject ( M: 0, S: 30, hRZone: 2, effort: 10, cadence: 95, name: "W/U Sit")

    dE8 = DrillObject ( M: 0, S: 30, hRZone: 2, effort: 10, cadence: 95, name: "W/U Stand")
    dE9 = DrillObject ( M: 0, S: 30, hRZone: 2, effort: 10, cadence: 95, name: "W/U Sit")

    dE10 = DrillObject( M: 0, S: 30, hRZone: 2, effort: 10, cadence: 95, name: "W/U Stand")
    dE11 = DrillObject( M: 0, S: 30, hRZone: 2, effort: 10, cadence: 95, name: "W/U Sit")

    dE12 = DrillObject( M: 0, S: 30, hRZone: 2, effort: 10, cadence: 95, name: "W/U Seated 80% left leg")
    dE13 = DrillObject( M: 0, S: 30, hRZone: 2, effort: 10, cadence: 95, name: "W/U Seated 80% right leg")

    dE14 = DrillObject( M: 0, S: 30, hRZone: 2, effort: 10, cadence: 95, name: "W/U Seated 80% left leg")


    arrayE1Drills =
    [dE1,
    dE2,
    dE3,
    dE4,
    dE5,
    dE6,
    dE7,
    dE8,
    dE9,
    dE10,
    dE11,
    dE12,
    dE13,
    dE14]


}

}

最后,我有电子锻炼类(class)。这是一个进行多次锻炼的类(class)。 e1锻炼对象需要保存EDrills类的数组E1Drills。

import UIKit


class EWorkouts {

var e1: WorkoutObj
var e2: WorkoutObj
var e3: WorkoutObj
var e4: WorkoutObj
var e5: WorkoutObj

var arrayEAll : [WorkoutObj]
var arrayE0to45 : [WorkoutObj]
var arrayE30to45: [WorkoutObj]
var arrayE45to60: [WorkoutObj]
var arrayEGreater45: [WorkoutObj]
var arrayE0to60: [WorkoutObj]
var arrayEGreater60: [WorkoutObj]

var myEDrillsClass : EDrills


 init()
{
    myEDrillsClass = EDrills()
    let myArray = myEDrillsClass.arrayE1Drills


    e1 = WorkoutObj(type: "E", number: 1, duration: 63, desc: "Rolling Hilly Course", drillSet: myArray)

 }

当尝试将 arrayE1Drills 加载到锻炼中时,出现错误:无法使用类型为参数列表(类型:String,数字:Int,持续时间:Int,desc:)调用类型“WorkoutObjc”的初始值设定项:字符串,drillSet:[DrillObject])

最佳答案

存在类型不匹配

var锻炼类型:NSString --> init:String

var锻炼描述:NSString --> init:String

及之后的NSArray <--> Array

自 Swift 1.2 起,Foundation 基本类型不再隐式转换为 Swift 对应类型

我建议仅使用 Swift 类型

关于arrays - 无法调用类型 : with an argument list of type: 的初始值设定项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31192600/

相关文章:

javascript - Coffeescript 按索引删除数组值

swift - 使用 CoreImage 生成条码 CI 39

javascript - 如何动态地将新行添加到表中,每行都有表标题和列?

java - ArrayHeap 类不返回排序数组

ios - 从外部 xib/nib 文件导入的自定义按钮不响应按钮单击

ios - 一旦屏幕在实际设备中被锁定,LockScreen Player 就不会出现。

JavaScript - 使用数据创建数组而不循环

c++ - VC++ 的一个大错误?为什么初始化列表不对结构进行值初始化?

c# - 为什么C#局部变量必须初始化?

c# - 将数组转换为元组?