Ami*_*miH 4 objective-c cloudinary swift xcode6
有没有办法在Swift文件中使用Obj-C SDK?我试图将cloudinary SDK添加到我的项目中.我找到了一种方法将libcloudinary.a添加到我的项目框架中,但它无法正常工作.
更新:Cloudinary刚刚发布了用Swift语言编写的新SDK:https://github.com/cloudinary/cloudinary_ios(Swift 3和Swift 2.3在不同的早午餐)
这些对我有用:
pod "Cloudinary"
pod install
然后打开工作区文件,而不是项目.#import "Cloudinary/Cloudinary.h"
您现在可以使用Cloudinary API.以下是一些要上传的代码:
let cloudinary_url = "cloudinary://API_KEY:API_SECRET@CLOUD_NAME"
var uploader:CLUploader = CLUploader(cloudinary, delegate: self)
uploader.upload(UIImageJPEGRepresentation(new_image, 0.8), options: ["format":"jpg"], withCompletion: { ([NSObject : AnyObject]!, errorResult:String!, code:Int, context:AnyObject!) -> Void in
}, andProgress: { (p1:Int, p2:Int, p3:Int, p4:AnyObject!) -> Void in
})
Run Code Online (Sandbox Code Playgroud)小智 5
是的你可以.
首先,您需要按照此处的说明设置您的xcode项目.然后,您需要创建Swift文档中定义的桥接头文件.
例
#ifndef Fun_Bridging_Header_h
#define Fun_Bridging_Header_h
#import "Cloudinary.h"
#endif
Run Code Online (Sandbox Code Playgroud)
不幸的是,他们的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
Run Code Online (Sandbox Code Playgroud)
实现(CloudinaryFactory.m):
#import "CloudinaryFactory.h"
@implementation CloudinaryFactory
+ (CLUploader*)create:(CLCloudinary*)cloudinary delegate:(id <CLUploaderDelegate> )delegate
{
return [[CLUploader alloc] init:cloudinary delegate:delegate];
}
@end
Run Code Online (Sandbox Code Playgroud)
和更新的桥接文件
#ifndef Fun_Bridging_Header_h
#define Fun_Bridging_Header_h
#import "CloudinaryFactory.h"
#endif
Run Code Online (Sandbox Code Playgroud)
现在,使用它:
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"])
}
Run Code Online (Sandbox Code Playgroud)
我希望它有所帮助!更多,这是相关的博客文章
归档时间: |
|
查看次数: |
3013 次 |
最近记录: |