owncloud / ios-library

MIT License
77 stars 90 forks source link

Usage in swift raises exception #132

Open mradke opened 8 years ago

mradke commented 8 years ago

I am trying to connect to a local owncloud instance with swift using this library. The app example you are providing is working fine with my local setup. I have successfully imported the libownCloudiOS.a library and header files as per the Readme instructions.

Now when I try to invoke the readFolder method, an exception is raised:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString encodeString:]: unrecognized selector sent to instance

The function provoking this error looks like:

let com = OCCommunication()
com.setCredentialsWithUser("admin", andPassword: "password")

var path = "http://cloud.local.dev/remote.php/webdav/"
path = path.stringByRemovingPercentEncoding!
print(path)

com.readFolder(path, withUserSessionToken: UtilsFramework.getUserSessionToken(), onCommunication: com, successRequest: { (response: NSHTTPURLResponse!, items: [AnyObject]!, token: String!, redirectServer:String!) in
        print("success")
                }, failureRequest: { (response: NSHTTPURLResponse!, error: NSError!, token: String!, redirectServer: String!) in
        print("failure")
    })
}

Am I missing some arcane "this does not work in swift/objc that way" gotchas?

sumomoneko commented 8 years ago

Exception rised here.

- (void) readFolder: (NSString *) path withUserSessionToken:(NSString *)token
    onCommunication:(OCCommunication *)sharedOCCommunication
     successRequest:(void(^)(NSHTTPURLResponse *response, NSArray *items, NSString *redirectedServer, NSString *token)) successRequest
     failureRequest:(void(^)(NSHTTPURLResponse *response, NSError *error, NSString *token, NSString *redirectedServer)) failureRequest{

    if (!token){
        token = @"no token";
    }

    path = [path encodeString:NSUTF8StringEncoding];  // HERE...

The method is defined in NSString+Encode.h and NSString+Encode.m , you might add these files to your project.

TinkerToysCodeManufaktur commented 7 years ago

Has there been a solution or fix for this yet? I'm also trying to integrate this library into a Swift project but running into the exact same issue. Exposing NSString+Encode.h in the bridging header didn't make a difference, unfortunately. Thanks!

zero0cool0 commented 7 years ago

Did you set the -ObjC flag as advised in the installation notes?

rvilarl commented 6 years ago

The installation notes advise -Obj-C. The problem disappears once -Obj-C is replaced by -ObjC. Could you fix the installation notes?