使用未解析的标识符 - UITableView

Use of unresolved identifier - UITableView

我正在尝试 uitableview 包含星期几。首先应该始终是当前日期。但是我对导入标识符有一个简单的问题。这是我的代码:

class SecondViewController: UIViewController, UITableViewDataSource,  UITableViewDelegate {
 @IBOutlet var tableView: UITableView!

 //Define Days Of The Week

 let calendar = NSCalendar.currentCalendar()
 let today = NSDate()

 let AddOneDay = NSCalendar.currentCalendar().dateByAddingUnit(
     .Day,
     value: 1,
     toDate: NSDate(),
     options: NSCalendarOptions(rawValue: 0))

 let AddTwoDays = NSCalendar.currentCalendar().dateByAddingUnit(
     .Day,
     value: 2,
     toDate: NSDate(),
     options: NSCalendarOptions(rawValue: 0))

 let AddThreeDays = NSCalendar.currentCalendar().dateByAddingUnit(
     .Day,
     value: 3,
     toDate: NSDate(),
     options: NSCalendarOptions(rawValue: 0))

 let AddFourDays = NSCalendar.currentCalendar().dateByAddingUnit(
     .Day,
     value: 4,
     toDate: NSDate(),
     options: NSCalendarOptions(rawValue: 0))

 let AddFiveDays = NSCalendar.currentCalendar().dateByAddingUnit(
     .Day,
     value: 5,
     toDate: NSDate(),
     options: NSCalendarOptions(rawValue: 0))

 let AddSixDays = NSCalendar.currentCalendar().dateByAddingUnit(
     .Day,
     value: 6,
     toDate: NSDate(),
     options: NSCalendarOptions(rawValue: 0))

 func convertDaysFormater(date: String) -> String {
     let daysFormatter = NSDateFormatter()
     daysFormatter.dateFormat = "EEEE"
     daysFormatter.locale = NSLocale(localeIdentifier: "pl_PL")
     let convertedOneDay = daysFormatter.stringFromDate(AddOneDay!)
     let convertedTwoDays = daysFormatter.stringFromDate(AddTwoDays!)
     let convertedThreeDays = daysFormatter.stringFromDate(AddThreeDays!)
     let convertedFourDays = daysFormatter.stringFromDate(AddFourDays!)
     let convertedFiveDays = daysFormatter.stringFromDate(AddFiveDays!)
     let convertedSixDays = daysFormatter.stringFromDate(AddSixDays!)

     return convertedOneDay
     return convertedTwoDays
     return convertedThreeDays
     return convertedFourDays
     return convertedFiveDays
     return convertedSixDays

 }

 // Define Array

 let textCellIdentifier = "TextCell"

 let swiftBlogs = [convertedOneDay, convertedTwoDays, etc...]

无法将 convertedOneDay - 'Use of unresolved identifier' 错误。感谢您的帮助 ;)

你有很多类似的代码例如:

let AddOneDay = NSCalendar.currentCalendar().dateByAddingUnit(
     .Day,
     value: 1,
     toDate: NSDate(),
     options: NSCalendarOptions(rawValue: 0))

 let AddTwoDays = NSCalendar.currentCalendar().dateByAddingUnit(
     .Day,
     value: 2,
     toDate: NSDate(),
     options: NSCalendarOptions(rawValue: 0))

 let AddThreeDays = NSCalendar.currentCalendar().dateByAddingUnit(
     .Day,
     value: 3,
     toDate: NSDate(),
     options: NSCalendarOptions(rawValue: 0))

 let AddFourDays = NSCalendar.currentCalendar().dateByAddingUnit(
     .Day,
     value: 4,
     toDate: NSDate(),
     options: NSCalendarOptions(rawValue: 0))

 let AddFiveDays = NSCalendar.currentCalendar().dateByAddingUnit(
     .Day,
     value: 5,
     toDate: NSDate(),
     options: NSCalendarOptions(rawValue: 0))

 let AddSixDays = NSCalendar.currentCalendar().dateByAddingUnit(
     .Day,
     value: 6,
     toDate: NSDate(),
     options: NSCalendarOptions(rawValue: 0))

对于其中的每一个,只有变量名称和值会发生变化,因此将其描述为 NSDate 数组会更有效。例如:

let futureDates:[NSDate] = {
    var futureDates = [NSDate]()
    for index in 1 ... 6 // Range starting tomorrow and going up to 6 days
    {
        let futureDate = NSCalendar.currentCalendar().dateByAddingUnit(
            .Day,
            value: index,
            toDate: NSDate(),
            options: NSCalendarOptions(rawValue: 0))
        futureDates.append(futureDate!)
    }
    return futureDates
}()

这样一来,更改您想查看的日期就变得微不足道了。您只需更改要迭代的范围。

您 运行 遇到的问题是您正试图在其范围之外使用 convertedOneDay。因为你在 convertDaysFormater 中声明了 convertedOneDay 它只能在那个函数中使用。

您的 convertDaysFormater 功能还可以改进。现在,您没有使用该参数,正如 Phillip Mills 指出的那样,一旦您调用 return 就会退出该函数,因此不会执行后续的 returns 。我建议您更改函数以接受一个日期和 return 一个字符串,如下所示:

func convertDaysFormatter(date:NSDate) -> String {
    let daysFormatter = NSDateFormatter()
    daysFormatter.dateFormat = "EEEE"
    daysFormatter.locale = NSLocale(localeIdentifier: "pl_PL")
    return daysFormatter.stringFromDate(date)
}

我们现在可以使用我们的 futureDates 和我们的 convertDaysFormatter 函数来生成您想要的 swiftBlogs 数组。通过这样说:

let swiftBlogs:[String] = {
    var swiftBlogs = [String]()
    for date in futureDates
    {
        swiftBlogs.append(convertDaysFormatter(date))
    }
    return swiftBlogs
}()

我们只是从 futureDates 中获取每个日期,并使用 convertDaysFormatter 到 return 我们附加到数组的适当字符串。在 swift 中,您可以通过简单地说:

来更简洁地表达这一点
let swiftBlogs = futureDates.map{convertDaysFormatter([=14=])}

当我 运行 这段代码时,我得到 swiftBlogs 等于:

["niedziela", "poniedziałek", "wtorek", "środa", "czwartek", "piątek"]