【问题标题】:Creating a class and storing information in Arrays创建一个类并将信息存储在数组中
【发布时间】:2018-02-02 07:03:22
【问题描述】:

尝试创建一个应用程序,让我可以根据感觉对一本书进行分类。我可以选择快乐、恐惧、悲伤等类别,然后显示特定的文本和章节,我可以在其中水平滚动浏览每个类别。我现在需要做的就是找到一种更简单的方法来从类中获取章节和文本,并创建一个函数,我可以在其中单独调用我的 UIScrollView 中的章节和类。

我有一个BookBank 的模型和一个HappyText 的模型。 快乐文本模型是我将所有内容都存储在快乐上的地方。 我需要找到一种方法来单独调用文本和章节,以便我可以获取该信息并将其放在 UIScrollView 上。

class BookBank {

    let chapter : String
    let verse : String

    init(chapter: String, verse: String) {
        self.chapter = chapter
        self.verse = verse
    }  
}

class HappyText {

    var list = [BookBank]()

    init() {

        list.append(BookBank(chapter: "Chapter 1", text: "And he rejoiced in happiness."))
        list.append(BookBank(chapter: "Chapter 1", text: "The business was doing well and his health was improving."))
        list.append(BookBank(chapter: "Chapter 2", text: "John walked down to the harbor to greet his wife and had the biggest smile on his face"))

    }   
}

class FeatureViewVC: UIViewController {

    var featureArray = [String]()
    let book = HappyText()
    var bookChapter = [String]()
    var bookText = [String]()

    override func viewDidLoad() {    
        super.viewDidLoad()

        if feelingLabel.text == "Happiness" {
            featureArray = []
        } else if feelingLabel.text == "Fear" {
            featureArray = []
        }
    }

    func loadText() {
        var bookChapter = [book.list(chapter)]
    }
}

【问题讨论】:

  • 为什么不想使用 UITableView?
  • 你的意思是:featureArray = Array(list)? .//列表是HappyText.list
  • 你也可以在你的控制器中制作:'var happyText:HappyText = HappyText()' 如果你想要一个章节:'happyText.list[index].chapter' 或者你在你的loadText(): 'book.list[index].chapter'
  • @M.Wojcik 我收到此错误提示无法将类型 '(Any) -> Int' 的值转换为预期的参数类型 '(UnboundedRange_) -> ()'
  • 我正在使用这个:func loadText() { bookChapter = book.list[index].chapter bookText = book.list[index].text }

标签: ios arrays swift class uiscrollview


【解决方案1】:

根据我的cmets,我在这里给你一个代码示例。

首先,在您的 BookBank 模型中,您有 2 个参数:chapterverse。但是当你在 HappyText 模型中创建一个列表时,在初始化 BookBank 时你会给出text 而不是verse。我也看不到感觉标签标签的任何出口集合,但我想你只是没有在问题示例中添加它。

无论如何,loadText() 方法的工作示例:

func loadText() {
        //instead of index you need to put an Int number, like here:
        var bookChapter = [book.list[1].chapter]
        var bookVerse = [book.list[1].verse]

        print("Chapter: \(bookChapter), verse: \(bookVerse)")
    }

现在调用loadText() 会打印你:

Chapter: ["Chapter 1"], verse: ["The business was doing well and his health was improving."]

如果您收到此处提到的错误:

error: cannot convert value of type '(Any) -> Int' to expected argument type '(UnboundedRange_) -> ()'

比你放“索引”这个词而不是索引号。索引号是一个 int,就像在数组中一样。如果列表中有 3 个元素,则列表中的第一个元素的索引 = 0。下一个是 1,然后是 2...,依此类推。检查此链接:swift arrays

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-11
    • 2022-10-24
    • 1970-01-01
    • 2019-11-01
    • 1970-01-01
    • 2012-08-03
    • 2021-08-18
    • 1970-01-01
    相关资源
    最近更新 更多