有没有一种方法可以在Swift文件中使用Obj-C SDK?我试图将cloudinary SDK添加到我的项目中。我找到了一种将libcloudinary.a添加到我的项目Frameworks中的方法,但是它不起作用。
更新:Cloudinary刚刚发布了用Swift语言编写的新SDK:https://github.com/cloudinary/cloudinary_ios(Swift 3和Swift 2.3在单独的早午餐中)
是的你可以。
首先,您需要按照此处的说明进行xcode项目设置。然后,您将需要创建一个Swift docs中定义的桥接头文件。
例子
#ifndef Fun_Bridging_Header_h
#define Fun_Bridging_Header_h
#import "Cloudinary.h"
#endif
不幸的是,他们的Objective-C API无法与Swift完全互操作,即他们的上传API(CLUploader)。
我要做的就是让它在Objective-C中创建一个工厂类
接口(CloudinaryFactory.h)
#ifndef Fun_Wrappy_h
#define Fun_Wrappy_h
#import "Cloudinary.h"
@interface CloudinaryFactory : NSObject
+ (CLUploader*)create:(CLCloudinary*)cloudinary delegate:(id <CLUploaderDelegate> )delegate;
@end
#endif
实现(CloudinaryFactory.m):
#import "CloudinaryFactory.h"
@implementation CloudinaryFactory
+ (CLUploader*)create:(CLCloudinary*)cloudinary delegate:(id <CLUploaderDelegate> )delegate
{
return [[CLUploader alloc] init:cloudinary delegate:delegate];
}
@end
以及更新的桥接文件
#ifndef Fun_Bridging_Header_h
#define Fun_Bridging_Header_h
#import "CloudinaryFactory.h"
#endif
现在,使用它:
var image:UIImage? //todo: i'm assuming you would set this somewhere
@IBAction func uploadGarment(sender: AnyObject) {
let clouder = CLCloudinary(url: "cloudinary://your:cloudinary@url")
let forUpload = UIImagePNGRepresentation(image) as NSData
let uploader = CloudinaryFactory.create(clouder, delegate: self)
uploader.upload(forUpload, options: ["public_id":"testo"])
}
希望对您有所帮助!有关更多信息,这是相关的博客文章
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句