Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.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 为什么Swift编译器会抛出“";找不到'<';接受提供的参数的;_Ios_Swift - Fatal编程技术网

Ios 为什么Swift编译器会抛出“";找不到'<';接受提供的参数的;

Ios 为什么Swift编译器会抛出“";找不到'<';接受提供的参数的;,ios,swift,Ios,Swift,我在一些新的Swift代码中使用FCModel来保存我的模型数据。在我的模式管理/迁移代码中,当我对Int执行逻辑比较时,会出现编译时错误。我无法判断这里是否存在语法或类型错误,或者是否发现了编译器错误 这是有效的逻辑操作吗?我错过了一个错误吗 Error: AppDelegate.swift:53:30: Could not find an overload for '<' that accepts the supplied arguments 更新#2 在苏丹的帮助下,我想我已经缩小

我在一些新的Swift代码中使用FCModel来保存我的模型数据。在我的模式管理/迁移代码中,当我对Int执行逻辑比较时,会出现编译时错误。我无法判断这里是否存在语法或类型错误,或者是否发现了编译器错误

这是有效的逻辑操作吗?我错过了一个错误吗

Error: AppDelegate.swift:53:30: Could not find an overload for '<' that accepts the supplied arguments
更新#2 在苏丹的帮助下,我想我已经缩小了问题的范围,但我不知道为什么。同样,我认为这可能是Swift中的一个错误

更新代码:

var schemaVersion: Int = 0
let database: FMDatabase = FMDatabase(path: databasePath)

FCModel.openDatabaseAtPath(databasePath, withSchemaBuilder: { (database, schemaVersion: CMutablePointer<CInt>) in
    var x:Int = Int(schemaVersion.withUnsafePointer( { (unsafeSchemaVersion: UnsafePointer<CInt>) -> CInt in
        return unsafeSchemaVersion.memory
    }))
    ...
})
以及:

有什么想法吗?

《宣言》

var schemaVersion: Int = (settings["schemaVersion"] as String).toInt()!
与您的错误无关,因为您正在本地重新定义
schemaVersion

... withSchemaBuilder: { database, schemaVersion in 
该方法定义为

+ (void)openDatabaseAtPath:(NSString *)path
         withSchemaBuilder:(void (^)(FMDatabase *db, int *schemaVersion))schemaBuilder;
因此,我假设块中
schemaVersion
的类型类似于
CMutablePointer

从逻辑上讲,您无法直接将其与
Int
1
)进行比较。如果它真的是一个
CMutablePointer
,您应该使用如下内容:

schemaVersion.withUnsafePointer { unsafeSchemaVersion in
    if unsafeSchemaVersion.memory < 1

    ...

    unsafeSchemaVersion.memory = 1
}
schemaVersion.withUnsafePointer{unsafeSchemaVersion in
如果unsafeschemaversation.memory<1
...
unsafeSchemaVersion.memory=1
}
这相当于Obj-C中的以下内容:

 if (*schemaVersion < 1) {
     ...
     *schemaVersion = 1;
 }
if(*schemaVersion<1){
...
*图式厌恶=1;
}
如果要引用在闭包外部定义的变量,应重命名它或重命名闭包参数。

声明

var schemaVersion: Int = (settings["schemaVersion"] as String).toInt()!
与您的错误无关,因为您正在本地重新定义
schemaVersion

... withSchemaBuilder: { database, schemaVersion in 
该方法定义为

+ (void)openDatabaseAtPath:(NSString *)path
         withSchemaBuilder:(void (^)(FMDatabase *db, int *schemaVersion))schemaBuilder;
因此,我假设块中
schemaVersion
的类型类似于
CMutablePointer

从逻辑上讲,您无法直接将其与
Int
1
)进行比较。如果它真的是一个
CMutablePointer
,您应该使用如下内容:

schemaVersion.withUnsafePointer { unsafeSchemaVersion in
    if unsafeSchemaVersion.memory < 1

    ...

    unsafeSchemaVersion.memory = 1
}
schemaVersion.withUnsafePointer{unsafeSchemaVersion in
如果unsafeschemaversation.memory<1
...
unsafeSchemaVersion.memory=1
}
这相当于Obj-C中的以下内容:

 if (*schemaVersion < 1) {
     ...
     *schemaVersion = 1;
 }
if(*schemaVersion<1){
...
*图式厌恶=1;
}

如果要引用在闭包外部定义的变量,应重命名该变量或重命名闭包参数。

Xcode检查器显示定义为
CMutablePointer
schemaVersion
,它没有定义为属性的
内存
。@blundin我在哪里使用
schemaVersion.memory
?当我清理名称冲突并专注于我的逻辑时,这对我很有效。谢谢Xcode检查器显示定义为
CMutablePointer
schemaVersion
,它没有定义为属性的
memory
。@blundin我在哪里使用
schemaVersion.memory
?当我清理名称冲突并专注于我的逻辑时,这对我很有效。谢谢