代码之家  ›  专栏  ›  技术社区  ›  user4951

是否有可以将ACAccountTypeIdentifier转换为SLServiceType的函数?

  •  0
  • user4951  · 技术社区  · 13 年前

    我看到它们很相似

    SOCIAL_EXTERN NSString *const SLServiceTypeTwitter NS_AVAILABLE(10_8, 6_0);
    SOCIAL_EXTERN NSString *const SLServiceTypeFacebook NS_AVAILABLE(10_8, 6_0);
    SOCIAL_EXTERN NSString *const SLServiceTypeSinaWeibo NS_AVAILABLE(10_8, 6_0);
    SOCIAL_EXTERN NSString *const SLServiceTypeTencentWeibo NS_AVAILABLE(10_9, 7_0);
    SOCIAL_EXTERN NSString *const SLServiceTypeLinkedIn NS_AVAILABLE(10_9, NA);
    
    ACCOUNTS_EXTERN NSString * const ACAccountTypeIdentifierTwitter NS_AVAILABLE(NA, 5_0);
    ACCOUNTS_EXTERN NSString * const ACAccountTypeIdentifierFacebook NS_AVAILABLE(NA, 6_0);
    ACCOUNTS_EXTERN NSString * const ACAccountTypeIdentifierSinaWeibo NS_AVAILABLE(NA, 6_0);
    ACCOUNTS_EXTERN NSString * const ACAccountTypeIdentifierTencentWeibo NS_AVAILABLE(NA, 7_0);
    ACCOUNTS_EXTERN NSString * const ACAccountTypeIdentifierLinkedIn NS_AVAILABLE(NA, NA);
    

    为什么要跟踪两者?为什么有两组不同的常数?有没有一个函数可以将一个函数转换为另一个函数,或者应该由我自己制作?

    2 回复  |  直到 13 年前
        1
  •  2
  •   zadr    13 年前

    在不知道更多关于你试图做什么的细节的情况下,需要在两组常数之间转换会让我觉得这是一件错误的事情。

    Social.framework和Accounts.framework是独立的框架,它们有不同的用途——你可以使用其中一个而不使用另一个。

        2
  •  0
  •   user4951    13 年前

    我最终完成了以下功能:

    -(NSString *) strAccountTypeIdentifier
    {
        if (self.bglm==BGLoginModeTwitter)
        {
            return ACAccountTypeIdentifierTwitter;
        }
        else if(self.bglm==BGLoginModeFacebook)
        {
            return ACAccountTypeIdentifierFacebook;
        }
        else
        {
            return nil;
        }
    }
    -(NSString *) strSLServiceType
    {
        if (self.bglm==BGLoginModeTwitter)
        {
            return SLServiceTypeTwitter;
        }
        else if(self.bglm==BGLoginModeFacebook)
        {
            return SLServiceTypeFacebook;
        }
        else
        {
            return nil;
        }
    }
    
    -(ACAccountType *) ACAccounts
    {
        NSAssert(self.ACAstore, @"ACAStore must not be empty by this time");
        return [self.ACAstore accountTypeWithAccountTypeIdentifier:self.strAccountTypeIdentifier];
    }
    
    -(NSString *) strAccountName{
        if (self.bglm==BGLoginModeTwitter)
        {
            return @"Twitter";
        }
        else if(self.bglm==BGLoginModeFacebook)
        {
            return @"Facebook";
        }
        else
        {
            return nil;
        }
    }
    

    现在,我只需要一个BGLoginMode类型的枚举,就是它。通过调用这些函数,我可以很容易地获得其余的枚举。