首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSSecureCoding in Swift (Facebook )

NSSecureCoding in Swift (Facebook )
EN

Stack Overflow用户
提问于 2015-04-22 18:51:46
回答 1查看 1.1K关注 0票数 0

我正在尝试将一个目标C代码转换成Swift代码。

目标-C:

代码语言:javascript
复制
#import "SUCacheItem.h"

#define SUCACHEITEM_TOKEN_KEY @"token"
#define SUCACHEITEM_PROFILE_KEY @"profile"

@implementation SUCacheItem

+ (BOOL)supportsSecureCoding
{
return YES;
}

- (id)initWithCoder:(NSCoder *)aDecoder
{
SUCacheItem *item = [[SUCacheItem alloc] init];
item.profile = [aDecoder decodeObjectOfClass:[FBSDKProfile class]   forKey:SUCACHEITEM_PROFILE_KEY];
item.token = [aDecoder decodeObjectOfClass:[FBSDKAccessToken class] forKey:SUCACHEITEM_TOKEN_KEY];
return item;
}

- (void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeObject:self.profile forKey:SUCACHEITEM_PROFILE_KEY];
[aCoder encodeObject:self.token forKey:SUCACHEITEM_TOKEN_KEY];
}

@end

我把这段代码翻译成:

代码语言:javascript
复制
class CacheItem: NSObject, NSSecureCoding {

let CACHEITEM_TOKEN_KEY = "token"
let CACHEITEM_PROFILE_KEY = "profile"
var profile: AnyObject
var token: AnyObject

func supportsSecureCoding() -> Bool {
    return true
}

required init(coder aDecoder: NSCoder) {
    var item = CacheItem(coder: aDecoder)
    item.profile = aDecoder.decodeObjectOfClass(FBSDKProfile.self, forKey: CACHEITEM_PROFILE_KEY)!
    item.token = aDecoder.decodeObjectOfClass(FBSDKAccessToken.self, forKey: CACHEITEM_TOKEN_KEY)!
}


func encodeWithCoder(aCoder: NSCoder) {
    aCoder.encodeObject(self.profile, forKey: CACHEITEM_PROFILE_KEY)
    aCoder.encodeObject(self.token, forKey: CACHEITEM_TOKEN_KEY)
}   
}

这给了我一个错误:键入'CacheItem‘不符合协议'NSSecureCoding’

我在这里错过了什么?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-22 19:47:51

supportsSecureCoding函数需要在类级别上:

代码语言:javascript
复制
class func supportsSecureCoding() -> Bool {
    return true
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29806449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档