小编Man*_*ani的帖子

swift:Closure声明就像块声明一样

我们可以在Objective-C中声明如下所示的块.

typedef void (^CompletionBlock) (NSString* completionReason);
Run Code Online (Sandbox Code Playgroud)

我试图在swift中做到这一点,它给出了错误.

func completionFunction(NSString* completionReason){ }
typealias CompletionBlock = completionFunction
Run Code Online (Sandbox Code Playgroud)

错误:使用未声明的'completionFunction'

定义:

var completion: CompletionBlock = { }
Run Code Online (Sandbox Code Playgroud)

这该怎么做?

更新:

根据@ jtbandes的回答,我可以创建具有多个参数的闭包

typealias CompletionBlock = ( completionName : NSString, flag : Int) -> ()
Run Code Online (Sandbox Code Playgroud)

ios swift

89
推荐指数
2
解决办法
4万
查看次数

swift:枚举常量的类型和值

我知道,枚举常量应该像swift一样

enum CompassPoint {
    case North
    case South
    case East
    case West
}
Run Code Online (Sandbox Code Playgroud)

但是如何为第一个元素赋值,如下面的Objective-C代码

enum ShareButtonID : NSInteger
{
   ShareButtonIDFB = 100,
   ShareButtonIDTwitter,
   ShareButtonIDGoogleplus

}ShareButtonID;
Run Code Online (Sandbox Code Playgroud)

enums objective-c ios swift ios8

34
推荐指数
1
解决办法
3万
查看次数

swift:等效的objective-c运行时类

什么是以下Objective-C代码的等效swift代码.我无法找到运行时概念的快速主题.

#import <objc/runtime.h>    
Class class = [self class];
Run Code Online (Sandbox Code Playgroud)

试图获得类对象self

更新: 尝试使用以下代码,得到错误'UIViewController.type' doesn't conform to protocol 'AnyObject'

var klass: AnyClass = object_getClass(self)
Run Code Online (Sandbox Code Playgroud)

注意:找到这篇文章,但没有帮助.

objective-c-runtime ios swift

33
推荐指数
3
解决办法
2万
查看次数

Ranging Beacons仅适用于app运行?

当应用程序没有运行时,我很难让它工作.我已locationManager:didRangeBeacons:inRegion:实现并在应用程序在前台或后台运行时调用它,但是当我退出应用程序并锁定屏幕时它似乎没有做任何事情.位置服务图标消失了,我永远不知道我进入了信标范围.LocalNotification应该仍然有效吗?

我在背景模式(XCode 5)中选择了位置更新和使用蓝牙LE配件我认为我不需要它们.

任何帮助非常感谢.

-(void)watchForEvents { // this is called from application:didFinishLaunchingWithOptions
    id class = NSClassFromString(@"CLBeaconRegion");
    if (!class) {
        return;
    }

    CLBeaconRegion * rflBeacon = [[CLBeaconRegion alloc] initWithProximityUUID:kBeaconUUID identifier:kBeaconString];
    rflBeacon.notifyOnEntry = YES;
    rflBeacon.notifyOnExit = NO;
    self.locationManager = [[CLLocationManager alloc] init];
    self.locationManager.delegate = self;
    [self.locationManager startRangingBeaconsInRegion:rflBeacon];
    [self.locationManager startMonitoringForRegion:rflBeacon];
}

-(void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region {
    if (beacons.count == 0 || eventRanged) { // breakpoint set here for testing
        return;
    }

    eventRanged = YES;
    if (backgroundMode) { // this …
Run Code Online (Sandbox Code Playgroud)

ios ios7 ibeacon

24
推荐指数
4
解决办法
3万
查看次数

Xcode 5.1:缺少必需的架构arm64

刚升级到Xcode 5.1,出现以下错误:

忽略文件...依赖关系/ SalesforceNetworkSDK/libSalesforceNetworkSDK.a,缺少文件中所需的体系结构arm64 ...依赖关系/ SalesforceNetworkSDK/libSalesforceNetworkSDK.a(3个切片)

如果我只关闭构建活动拱并从有效拱中移除arm64,我得到:

Build/Products/Debug-iphoneos/libPods.a,文件是为存档而构建的,而不是被链接的架构(armv7)

xcode ios xcode5.1

24
推荐指数
3
解决办法
5万
查看次数

将文件路径转换为文件URL [NSUrl]

我尝试使用AFNetworking多部分表单数据进行文件上传操作.我收到了以下错误.我可以找出什么是错误.

[NSURL URLWithString:filePath] 也用过[[NSURL URLWithString:filePath] filePathURL],但不帮助我.当我记录文件路径字符串时:它显示正确的路径:/var/mobile/Applications/3CBF5127-B2FF-49C3-AC98-16BD0886EEE7/Documents/20140326105108_slno.ma4

错误: @"NSLocalizedFailureReason" : @"Expected URL to be a file URL"

Questions:如何将此路径字符串转换为file url

objective-c nsurl filepath ios

23
推荐指数
2
解决办法
3万
查看次数

Google使用GIDSignin多次登录

我可以使用GIDSignIn下面的代码对单个帐户进行身份验证.

    GIDSignIn *googleSignIn = [GIDSignIn sharedInstance];
    googleSignIn.delegate = self;
    googleSignIn.uiDelegate = self;
    googleSignIn.clientID = (NSString*)cGmailAppClientId;
    googleSignIn.scopes = [self getGmailAuthenticationScopes];;
    [googleSignIn signIn];
Run Code Online (Sandbox Code Playgroud)

但是GIDSignIn是共享实例.这是一个只有一个帐户.如何添加多个帐户?应同时访问多个帐户(Ex获取访问令牌).

相关的SO问题没有给出正确的想法.

ios google-signin gidsignin

15
推荐指数
1
解决办法
1120
查看次数

单个应用程序二进制文件如何支持64位和32位应用程序

我们可以在这里看到苹果公告..根据这个文档,我们可以提交相同的二进制文件,支持32位和64位.我发现这里有一个堆栈溢出答案.但根据这个答案,我们should设定deployment target as IO7+.但是苹果医生说,您可以通过IOS 7和IOS 6支持提交吗?我的问题是,如何通过部署目标IOS6 +生成支持32位和64位的二进制文件?

注意:我正在使用xcode 5.0

更新: Question above is fixed by using xcode 5.0.2.但我很困惑如何为32位以及64位编写代码.我知道一件事,我们必须在某些时候分别做两个代码.但是How can I do?.例如,如果在ios6中不推荐使用一种方法,我们也为ios 6和ios7提供代码.在同样的情况下也遵循这里或为此做一些其他技术.

iphone app-store 32bit-64bit ios

14
推荐指数
3
解决办法
3万
查看次数

Swift:这里不允许使用没有getter/setter方法的'var'声明

我试图IBOutlet在类的扩展上声明属性.但它给出了错误

此处不允许使用不带getter/setter方法的'var'声明

class ExampleView : UIView
{

}

extension ExampleView
{
    @IBOutlet var btn1, btn2 : UIButton // here I got error.

}
Run Code Online (Sandbox Code Playgroud)

请任何人建议我这样做的正确方法?

ios swift

14
推荐指数
1
解决办法
6863
查看次数

是否可以使用Google plus API获取电话号码

在我成功进行身份验证后,我已经通过以下方法获得了用户信息.

// 1. Create a |GTLQuery| object to get people  profile who are authenticated

GTLQueryPlus *query = [GTLQueryPlus queryForPeopleGetWithUserId:@"me"];

// 2. Execute the query.

[[[GPPSignIn sharedInstance] plusService] executeQuery:query completionHandler:^(GTLServiceTicket *ticket,GTLPlusPerson *gpUser,NSError *error) {
// here I've retrieved all info about users
    NSLog(@"GP user first name : %@",gpUser.name.givenName);
    NSLog(@"GP user last name : %@",gpUser.name.familyName);
    //But don't know how extract phone number. 
}];
Run Code Online (Sandbox Code Playgroud)

这个谷歌文档显示了如何通过谷歌api检索信息.但如果用户将其显示为公开,则无法查看如何提取电话号码是否可以使用google plus api?

objective-c ios google-plus

13
推荐指数
1
解决办法
3429
查看次数