Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为ShinobiGrids快速创建NSObject数组_Ios_Swift_Shinobi - Fatal编程技术网

Ios 为ShinobiGrids快速创建NSObject数组

Ios 为ShinobiGrids快速创建NSObject数组,ios,swift,shinobi,Ios,Swift,Shinobi,我对斯威夫特的ShinobidTagRiddataSourceHelper有意见,他们有很好的objective-c示例,但对斯威夫特来说不多 在objective C中,它们创建一个NSObject类 @interface Student : NSObject @property NSString *name; @property NSNumber *credits; @property BOOL canGraduate; - (id)initWithName:(NSString *)na

我对斯威夫特的ShinobidTagRiddataSourceHelper有意见,他们有很好的objective-c示例,但对斯威夫特来说不多

在objective C中,它们创建一个NSObject类

@interface Student : NSObject

@property NSString *name;
@property NSNumber *credits;
@property BOOL canGraduate;

- (id)initWithName:(NSString *)name andCredits:(NSNumber *)credits canGraduate:(BOOL)canGraduate;

@end

@interface Student : NSObject

@property NSString *name;
@property NSNumber *credits;
@property BOOL canGraduate;

- (id)initWithName:(NSString *)name andCredits:(NSNumber *)credits canGraduate:(BOOL)canGraduate;

@end
然后它们填充数组:

- (NSArray *)createMockStudentArray {
    return @[[[Student alloc] initWithName:@"Bill"      andCredits:@40  canGraduate:NO],
             [[Student alloc] initWithName:@"Rob"       andCredits:@80  canGraduate:YES],
             [[Student alloc] initWithName:@"James"     andCredits:@80  canGraduate:YES],
             [[Student alloc] initWithName:@"Harry"     andCredits:@30  canGraduate:NO],
             [[Student alloc] initWithName:@"Sue"       andCredits:@90  canGraduate:YES],
             [[Student alloc] initWithName:@"Rachel"    andCredits:@120 canGraduate:YES],
             [[Student alloc] initWithName:@"Annie"     andCredits:@70  canGraduate:NO],
             [[Student alloc] initWithName:@"Daniel"    andCredits:@80  canGraduate:YES],
             [[Student alloc] initWithName:@"Harry"     andCredits:@80  canGraduate:YES],
             [[Student alloc] initWithName:@"Tom"       andCredits:@90  canGraduate:YES],
             [[Student alloc] initWithName:@"Fred"      andCredits:@40  canGraduate:NO],
             [[Student alloc] initWithName:@"Andy"      andCredits:@10  canGraduate:NO],
             [[Student alloc] initWithName:@"Sarah"     andCredits:@60  canGraduate:NO],
             [[Student alloc] initWithName:@"Elliot"    andCredits:@80  canGraduate:YES],
             [[Student alloc] initWithName:@"Babra"     andCredits:@75  canGraduate:YES],
             [[Student alloc] initWithName:@"Sam"       andCredits:@110 canGraduate:YES],
             [[Student alloc] initWithName:@"William"   andCredits:@120 canGraduate:YES],
             [[Student alloc] initWithName:@"Helen"     andCredits:@90  canGraduate:YES],
             [[Student alloc] initWithName:@"Jim"       andCredits:@100 canGraduate:YES],
             [[Student alloc] initWithName:@"Oleg"      andCredits:@90  canGraduate:YES],
             [[Student alloc] initWithName:@"Andrew"    andCredits:@110 canGraduate:YES]];
}
然后在SDataGridDataSourceHelper设置中调用它:

SDataGridDataSourceHelper *_dataSourceHelper = [[SDataGridDataSourceHelper alloc] initWithDataGrid:_grid];
    _dataSourceHelper.delegate = self;
    _dataSourceHelper.data = [self createMockStudentArray];
这就是我在使用swift时遇到的问题,我创建了我的类:

class DataObject : NSObject
{

    var lot: String
    var columnA: String
    var columnB: String
    var columnC: String
    var cameraColumn: String

    init(fromString lot: String, columnA: String, columnB: String, columnC: String, cameraColumn: String) {
        self.lot = lot
        self.columnA = columnA
        self.columnB = columnB
        self.columnC = columnC
        self.cameraColumn = cameraColumn
        super.init()
    }
}
然后填充一个数组并将其应用于SDataGridDataSourceHelper:

let helper = SDataGridDataSourceHelper(dataGrid: grid!)
        helper?.delegate = self

        var array = [DataObject.init(fromString: "lot", columnA: "colum a", columnB: "colum b", columnC: "colum c", cameraColumn: "camera")] as Array

        array.append(DataObject.init(fromString: "lot", columnA: "colum a", columnB: "colum b", columnC: "colum c", cameraColumn: "camera"))

        print(array)

        helper?.data = array
但当我运行它,我的应用程序崩溃时,我会出现这个错误:

此类不符合关键批次的关键值编码

我已经查找了这个错误,但是所有的修复都与我的视图控制器有关,它是空的(但是有导航控制器和点击栏控制器)

我做错什么了吗?这是我正在进行的项目的代码


这就是Shinobigrids在Swift上的所有功能:开始指南-Swift 4中的Swift

,对象不会被隐式推断为暴露于Objective-C

您需要向每个属性添加
@objc
属性

@objc var lot: String
@objc var columnA: String
@objc var columnB: String
@objc var columnC: String
@objc var cameraColumn: String
或者,如果所有属性都应该在ObjC中使用,请在类声明上方添加一次
@objcMembers

@objcMembers
class DataObject : NSObject { ...

var-lot:String
:在其前面添加
@objc
@objc-var-lot:String
,以此类推,对于另一个可能(您可能会出现另一个错误“该类不符合键列b的键值编码”,然后您必须在
var-columnB:String
之前添加
@objc
)。