【问题标题】:'(Int)->String' is not convertible to 'String' in an Array (Swift)'(Int)->String' 不能转换为数组中的 'String' (Swift)
【发布时间】:2015-07-03 17:53:46
【问题描述】:

我正在尝试将信息从另一个视图控制器传递到具有以下代码的视图控制器中,并将信息放入一个数组中。但是,无论我如何尝试插入它,我都会不断收到错误消息。有什么建议吗?

class ViewController: UIViewController, UITableViewDataSource, UIAlertViewDelegate{
var user = PFUser()

@IBAction func logoutButton(sender: AnyObject) {
    PFUser.logOut()
    if (PFUser.currentUser() != nil) {
        var alert = UIAlertView(title: "Something Went Wrong", message:"Could not logout. Please try again later." , delegate: self, cancelButtonTitle: "Okay")
        alert.show()
    }
}
@IBOutlet weak var schedule: UIImageView!

var recievedBlocks = [String]()

func blockOutput (block: Int)->String{
    if (block == 1){
        return "\(self.recievedBlocks[0])"
    }else if(block == 2){
        return "\(self.recievedBlocks[1])"
    }else if(block == 3){
        return "\(self.recievedBlocks[2])"
    }else if(block == 4){
        return "\(self.recievedBlocks[3])"
    }else if(block == 5){
        return "\(self.recievedBlocks[4])"
    }else if(block == 6){
        return "\(self.recievedBlocks[5])"
    }else if(block == 7){
        return "\(self.recievedBlocks[6])"
    }else if(block == 8){
        return "\(self.recievedBlocks[7])"
    }else{
        return "\(self.recievedBlocks[8])"
    }
}

var monday = [
    ("8:30-9:30",blockOutput(1)),
    ("9:34-9:48","Advisory"),
    ("9:52-10:52","Block 2"),
    ("10:56-11:56","Block 3"),
    ("11:56-12:36","Lunch"),
    ("12:40-1:39","Block 4"),
    ("1:43-2:42","Block 5"),
    ("2:46-3:45","Block 6")]

【问题讨论】:

  • 您的星期一是一个字符串数组,您将 ("8:30-9:30",blockOutput(1)) 作为不是字符串的元素传递。

标签: arrays swift xcode6


【解决方案1】:
class ViewController: UIViewController, UITableViewDataSource, UIAlertViewDelegate{
var user = PFUser()

@IBAction func logoutButton(sender: AnyObject) {
    PFUser.logOut()
    if (PFUser.currentUser() != nil) {
        var alert = UIAlertView(title: "Something Went Wrong", message:"Could not logout. Please try again later." , delegate: self, cancelButtonTitle: "Okay")
        alert.show()
    }
}
@IBOutlet weak var schedule: UIImageView!

var recievedBlocks = [String]()

func blockOutput (block: Int)->String{
    if (block == 1){
        return self.recievedBlocks[0]
    }else if(block == 2){
        return self.recievedBlocks[1]
    }else if(block == 3){
        return self.recievedBlocks[2]
    }else if(block == 4){
        return self.recievedBlocks[3]
    }else if(block == 5){
        return self.recievedBlocks[4]
    }else if(block == 6){
        return self.recievedBlocks[5]
    }else if(block == 7){
        return self.recievedBlocks[6]
    }else if(block == 8){
        return self.recievedBlocks[7]
    }else{
        return self.recievedBlocks[8]
    }
}

var monday:(String,String)[] = [
    ("8:30-9:30",blockOutput(1)),
    ("9:34-9:48","Advisory"),
    ("9:52-10:52","Block 2"),
    ("10:56-11:56","Block 3"),
    ("11:56-12:36","Lunch"),
    ("12:40-1:39","Block 4"),
    ("1:43-2:42","Block 5"),
    ("2:46-3:45","Block 6")]

【讨论】:

    【解决方案2】:

    我认为问题在于您试图在属性内调用blockOutput(1)。您需要将其移至方法中。

    【讨论】:

      【解决方案3】:
      var recievedBlocks :[String] = ["Block 1","Block 2","Block 3","Advisory4","Advisory5"]
      
      var monday:[(String,String)] = []
      
      func blockOutput(block: Int) -> String {
          return recievedBlocks.count > block ? recievedBlocks[block] : ""
      }
      
      monday = [("8:30-9:30", blockOutput(1)),("9:34-9:48","Advisory"),("9:52-10:52","Block 2"),("10:56-11:56","Block 3"),("11:56-12:36","Lunch"), ("12:40-1:39","Block 4"), ("1:43-2:42","Block 5"), ("2:46-3:45","Block 6")]
      

      【讨论】:

        猜你喜欢
        • 2014-10-09
        • 2014-10-16
        • 1970-01-01
        • 1970-01-01
        • 2018-02-28
        • 1970-01-01
        • 1970-01-01
        • 2014-08-01
        相关资源
        最近更新 更多