Ios Swift-调用中缺少参数“data”的参数

Ios Swift-调用中缺少参数“data”的参数,ios,swift,Ios,Swift,我想在UITableView中显示用户列表。我在构建它之后出现了这个错误 我创建了一个数据模型来存储用户列表 CRUDSwiftData.swift import UIKit class CRUDSwiftData: NSObject { var title: String var rating: Float init(title: String,rating: Float) { self.title = title self.rat

我想在UITableView中显示用户列表。我在构建它之后出现了这个错误

我创建了一个数据模型来存储用户列表

CRUDSwiftData.swift

import UIKit

class CRUDSwiftData: NSObject {

    var title: String
    var rating: Float

    init(title: String,rating: Float) {
        self.title = title
        self.rating = rating
    }

}
CRUDSwiftDoc.swift

import UIKit

class CRUDSwiftDoc: NSObject {

    var data:CRUDSwiftData
    var thumbImage:UIImage
    var fullImage:UIImage

    init(title: String,rating: Float,data:CRUDSwiftData, thumbImage:UIImage, fullImage:UIImage) {
        self.data = CRUDSwiftData(title: title,rating: rating);
        self.thumbImage = thumbImage
        self.fullImage = fullImage
    }
}
然后我将MasterViewController.swift类编辑到

MasterViewController.swift

var users: NSMutableArray = []

// At the end of viewDidLoad
self.title = "User List";

// Replace the return statement in tableView:numberOfRowsInSection with the following:
return users.count

// Replace tableView:cellForRowAtIndexPath with the following
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  UITableViewCell *cell = [tableView
               dequeueReusableCellWithIdentifier:@"MyBasicCell"];
  let user = users[indexPath.row] as CRUDSwiftDoc
  cell.textLabel.text = user.data.title
  cell.imageView.image = user.thumbImage
  return cell;
}
最后,我的AppDelegate.swift是这样的

AppDelegate.swift

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
        // Override point for customization after application launch.
        let user1 = CRUDSwiftDoc(title:"Potato Bug", rating: "4", thumbImage: "potatoBugThumb.jpg", fullImage: "potatoBug.jpg")
        let user2 = CRUDSwiftDoc(title:"House Centipede", rating: "3", thumbImage: "centipedeThumb.jpg", fullImage: "centipede.jpg")
        let user3 = CRUDSwiftDoc(title:"Wolf Spider", rating: "5", thumbImage: "wolfSpiderThumb.jpg", fullImage: "wolfSpider.jpg")
        let user4 = CRUDSwiftDoc(title:"Lady Bug", rating: "1", thumbImage: "ladybugThumb.jpg", fullImage: "ladybug.jpg")
        let shoppingList: NSMutableArray[] = [user1, user2, user3, user4]

        return true
    }
我在AppDelegate.swift中发现4个错误

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
        // Override point for customization after application launch.
        let user1 = CRUDSwiftDoc(title:"Potato Bug", rating: "4", thumbImage: "potatoBugThumb.jpg", fullImage: "potatoBug.jpg")
        let user2 = CRUDSwiftDoc(title:"House Centipede", rating: "3", thumbImage: "centipedeThumb.jpg", fullImage: "centipede.jpg")
        let user3 = CRUDSwiftDoc(title:"Wolf Spider", rating: "5", thumbImage: "wolfSpiderThumb.jpg", fullImage: "wolfSpider.jpg")
        let user4 = CRUDSwiftDoc(title:"Lady Bug", rating: "1", thumbImage: "ladybugThumb.jpg", fullImage: "ladybug.jpg")
        let shoppingList: NSMutableArray[] = [user1, user2, user3, user4]

        return true
    }
请给我一些建议


我的源代码:

您的CRUDSwiftDoc类具有如下初始化器:

init(title: String,rating: Float,data:CRUDSwiftData, thumbImage:UIImage, fullImage:UIImage)
第3个参数是数据,但在中初始化4对象时

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool
您没有提供数据参数:

let user1 = CRUDSwiftDoc(title:"Potato Bug", rating: "4", thumbImage: "potatoBugThumb.jpg", fullImage: "potatoBug.jpg")
您必须在评级和thumbImage之间添加数据

您还将字符串传递给rating参数,但它需要float,并且再次将字符串传递给thumbImage和fullImage,但它需要UIImage。将其更改为:

let data1 = CRUDSwiftData(title: "title 1", rating: 2.1);
let user1 = CRUDSwiftDoc(title:"Potato Bug", rating: 4.0, data:data1, thumbImage: UIImage(named:"potatoBugThumb.jpg"), fullImage: UIImage(named:"potatoBug.jpg"))
最后一个问题是,您创建了NSMUtableArray数组,但传递了CRUDSwiftDoc对象数组。将代码替换为:

let shoppingList:CRUDSwiftDoc[]=[user1、user2、user3、user4]


编译器说的是实话!你在打电话吗

let user1 = CRUDSwiftDoc(title:"Potato Bug", rating: "4", thumbImage: "potatoBugThumb.jpg", fullImage: "potatoBug.jpg")
然而,你的声明需要

init(title: String, rating: Float, data:CRUDSwiftData, thumbImage:UIImage, fullImage:UIImage) {
你没有提供数据! 更新 您需要通过init将数据传递给CRUDSwiftDoc,但是A您没有传递数据,B您正在通过init计算数据。您需要将init更改为

class CRUDSwiftDoc: NSObject {

    var data:CRUDSwiftData
    var thumbImage:UIImage
    var fullImage:UIImage

    init(title: String, rating: Float, thumbImage:UIImage, fullImage:UIImage) { // No data!!!
        self.data = CRUDSwiftData(title: title,rating: rating);
        self.thumbImage = thumbImage
        self.fullImage = fullImage
    }
}

还请注意,您正在以字符串rating:4的形式传递评级,而不是声明的浮点。

我已经尝试过了,但仍然得到了错误。你可以在这里查我的消息来源,但还是不行。您可以在这里参考我的完整代码,我收到了最新的错误消息,无法找到接受提供的参数的“init”重载。我相信您在init方法中做了一些更改。我使用链接中的代码对此进行了检查,它工作正常。为什么我不能使用NSMutableArray而不是CRUDSwiftDoc?您可以使用NSMutableArray,但您尝试使用NSMutableArray的数组NSMutableArray[],但您传递的是CRUDSwiftDoc的数组CRUDSwiftDoc[]。您可以使用NSMutableArray,但使用Swift的更好方法是使用新的数组CRUDSwiftDoc[]。如果你想改变它,让shoppingList。。。到购物清单。。