Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.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 2无法调用';FSEventStreamCreate';具有类型为的参数列表_Ios_Xcode_Macos_Swift_Swift2 - Fatal编程技术网

Ios Swift 2无法调用';FSEventStreamCreate';具有类型为的参数列表

Ios Swift 2无法调用';FSEventStreamCreate';具有类型为的参数列表,ios,xcode,macos,swift,swift2,Ios,Xcode,Macos,Swift,Swift2,使用Swift 2和Xcode 7 beta 2(构建:7A121l),我使用FSEventStream API和@convention(c)得到了这个编译错误 任何建议都会很棒,谢谢 internal class FileSystem { init () { let allocator: CFAllocator? = kCFAllocatorDefault // Create FSEventStream and return valid FSEventStreamRef

使用Swift 2和Xcode 7 beta 2(构建:7A121l),我使用FSEventStream API和@convention(c)得到了这个编译错误

任何建议都会很棒,谢谢

internal class FileSystem {

init () {

    let allocator: CFAllocator? = kCFAllocatorDefault

    // Create FSEventStream and return valid FSEventStreamRef
    // Alias FSEventStreamCallback - CFunction

    typealias FSEventStreamCallback = @convention(c) (ConstFSEventStreamRef, UnsafeMutablePointer<Void>, UInt, UnsafeMutablePointer<Void>, UnsafePointer<FSEventStreamEventFlags>, UnsafePointer<FSEventStreamEventId>) -> Void

    let callback: FSEventStreamCallback = {
        (streamRef, clientCallBackInfo, numEvents, eventPaths, eventFlags, eventIds) -> Void in
        print ("changed")
        // handle file event
    }

    let context: UnsafeMutablePointer<FSEventStreamContext> = nil
    let pathsToWatch: CFArray = [NSHomeDirectory() + "/Dir"]
    let sinceWhen: FSEventStreamEventId = UInt64(kFSEventStreamEventIdSinceNow)
    let latency: CFTimeInterval = 1.0
    let flags: FSEventStreamCreateFlags = UInt32(kFSEventStreamCreateFlagNone)

    let eventStream = FSEventStreamCreate(
        allocator,
        callback,
        context,
        pathsToWatch,
        sinceWhen,
        latency,
        flags
    )

    FSEventStreamScheduleWithRunLoop(eventStream, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode)
    FSEventStreamStart(eventStream)

}
}
内部类文件系统{
init(){
let分配器:CFAllocator?=kCFAllocatorDefault
//创建FSEventStream并返回有效的FSEventStreamRef
//别名FSEventStreamCallback-cffunction
typealias FSEventStreamCallback=@convention(c)(ConstFSEventStreamRef,unsafeutablepointer,UInt,unsafeutablepointer,UnsafePointer,UnsafePointer)->Void
let回调:FSEventStreamCallback={
(streamRef、clientCallBackInfo、numEvents、eventpath、eventFlags、eventid)->Void in
打印(“更改”)
//处理文件事件
}
let上下文:UnsafeMutablePointer=nil
让pathsToWatch:CFArray=[NSHomeDirectory()+“/Dir”]
让我们从以下时间开始:fseventstreamventid=UInt64(kfseventstreamventidsincenow)
let延迟:CFTimeInterval=1.0
let flags:FSEventStreamCreateFlags=UInt32(kFSEventStreamCreateFlagNone)
让eventStream=FSEventStreamCreate(
分配器,
回拨,
上下文
pathsToWatch,
从那时起,
延迟
旗帜
)
FSEventStreamScheduleWithRunLoop(eventStream,CFRunLoopGetCurrent(),kCFRunLoopDefaultMode)
FSEventStreamStart(eventStream)
}
}

您使用了错误的签名(UInt not Int):

typealias FSEventStreamCallback=@convention(c)(ConstFSEventStreamRef,UnsafeMutablePointer,Int,unsafetablepointer,UnsafePointer,UnsafePointer)->Void
这很好:

init () {

    let allocator: CFAllocator? = kCFAllocatorDefault

    // Create FSEventStream and return valid FSEventStreamRef
    // Alias FSEventStreamCallback - CFunction
    typealias FSEventStreamCallback = @convention(c) (ConstFSEventStreamRef, UnsafeMutablePointer<Void>, Int, UnsafeMutablePointer<Void>, UnsafePointer<FSEventStreamEventFlags>, UnsafePointer<FSEventStreamEventId>) -> Void
    let callback: FSEventStreamCallback = {
        (streamRef, clientCallBackInfo, numEvents, eventPaths, eventFlags, eventIds) -> Void in
        print ("changed")
        // handle file event
    }


    let context: UnsafeMutablePointer<FSEventStreamContext> = nil
    let pathsToWatch: CFArray = [NSHomeDirectory() + "/Dir"]
    let sinceWhen: FSEventStreamEventId = UInt64(kFSEventStreamEventIdSinceNow)
    let latency: CFTimeInterval = 1.0
    let flags: FSEventStreamCreateFlags = UInt32(kFSEventStreamCreateFlagNone)

    let eventStream = FSEventStreamCreate(
        allocator,
        callback,
        context,
        pathsToWatch,
        sinceWhen,
        latency,
        flags
    )

    FSEventStreamScheduleWithRunLoop(eventStream, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode)
    FSEventStreamStart(eventStream)

}
init(){
let分配器:CFAllocator?=kCFAllocatorDefault
//创建FSEventStream并返回有效的FSEventStreamRef
//别名FSEventStreamCallback-cffunction
typealias FSEventStreamCallback=@convention(c)(ConstFSEventStreamRef,unsafeutablepointer,Int,unsafeutablepointer,UnsafePointer,UnsafePointer)->Void
let回调:FSEventStreamCallback={
(streamRef、clientCallBackInfo、numEvents、eventpath、eventFlags、eventid)->Void in
打印(“更改”)
//处理文件事件
}
let上下文:UnsafeMutablePointer=nil
让pathsToWatch:CFArray=[NSHomeDirectory()+“/Dir”]
让我们从以下时间开始:fseventstreamventid=UInt64(kfseventstreamventidsincenow)
let延迟:CFTimeInterval=1.0
let flags:FSEventStreamCreateFlags=UInt32(kFSEventStreamCreateFlagNone)
让eventStream=FSEventStreamCreate(
分配器,
回拨,
上下文
pathsToWatch,
从那时起,
延迟
旗帜
)
FSEventStreamScheduleWithRunLoop(eventStream,CFRunLoopGetCurrent(),kCFRunLoopDefaultMode)
FSEventStreamStart(eventStream)
}

不客气。我发现来自Swift编译器的一些错误消息是神秘的。帮助我的是将组合语句分解成更小的块,手动复制语法分析器和代码生成器在事情成熟时应该更好地告诉您的内容。
init () {

    let allocator: CFAllocator? = kCFAllocatorDefault

    // Create FSEventStream and return valid FSEventStreamRef
    // Alias FSEventStreamCallback - CFunction
    typealias FSEventStreamCallback = @convention(c) (ConstFSEventStreamRef, UnsafeMutablePointer<Void>, Int, UnsafeMutablePointer<Void>, UnsafePointer<FSEventStreamEventFlags>, UnsafePointer<FSEventStreamEventId>) -> Void
    let callback: FSEventStreamCallback = {
        (streamRef, clientCallBackInfo, numEvents, eventPaths, eventFlags, eventIds) -> Void in
        print ("changed")
        // handle file event
    }


    let context: UnsafeMutablePointer<FSEventStreamContext> = nil
    let pathsToWatch: CFArray = [NSHomeDirectory() + "/Dir"]
    let sinceWhen: FSEventStreamEventId = UInt64(kFSEventStreamEventIdSinceNow)
    let latency: CFTimeInterval = 1.0
    let flags: FSEventStreamCreateFlags = UInt32(kFSEventStreamCreateFlagNone)

    let eventStream = FSEventStreamCreate(
        allocator,
        callback,
        context,
        pathsToWatch,
        sinceWhen,
        latency,
        flags
    )

    FSEventStreamScheduleWithRunLoop(eventStream, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode)
    FSEventStreamStart(eventStream)

}