小编Big*_*Lex的帖子

在StoryBoard中重新排列标签栏控制器顺序

在我的应用程序iPhone应用程序中,我有一个标签栏控制器,与4个不同的表视图控制器有4个关系.有没有办法以图形方式重新排列StoryBoard中关系的顺序?我找不到办法做到这一点,我相信我一定会错过一些东西!

xcode ios

149
推荐指数
11
解决办法
5万
查看次数

使用AFNetworking进行SSL固定

在我的应用程序中,我使用https和自签名SSL证书来保护我的客户端和服务器之间的连接.

我试图让AFNetworking库在我的应用程序捆绑的证书副本上进行SSL Pinning.

AFURLConnectionOperation标题中我定义了两个:

#define _AFNETWORKING_ALLOW_INVALID_SSL_CERTIFICATES_ =1
#define _AFNETWORKING_PIN_SSL_CERTIFICATES_ =1
Run Code Online (Sandbox Code Playgroud)

在调用starton 之前AFJSONRequestOperation我将SSLPinningMode属性设置为AFSSLPinningModeCertificate.

但是在尝试执行JSON请求时,我不断收到以下错误:

Error Domain=NSURLErrorDomain Code=-1012 "The operation couldn’t be completed. 
(NSURLErrorDomain error -1012.)" UserInfo=0x758f120 
{NSErrorFailingURLKey=https://mydomain.com,
NSErrorFailingURLStringKey=https://mydomain.com}
Run Code Online (Sandbox Code Playgroud)

AFURLConnectionOperation标题中我读到SSL Pinning与.cer证书一起使用但在我自己托管的OS X webserver中我有一个.crt证书.

这是问题吗?有没有办法让AFNetworking与.crt一起使用?

在Windows框中我将.crt转换为.cer并尝试将其捆绑到我的应用程序中,但我仍然得到相同的错误.即使在服务器端,我是否应该尝试使用新创建的.cer切换.crt文件?

ssl ios afnetworking

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

将NSTextView滚动到底部

我正在为OS X制作一个小型服务器应用程序,我正在使用NSTextView来记录有关已连接客户端的一些信息.

每当我需要记录某些东西时,我就会以这种方式将新消息附加到NSTextView的文本中:

- (void)logMessage:(NSString *)message
{
    if (message) {
        self.textView.string = [self.textView.string stringByAppendingFormat:@"%@\n",message];
    }
}
Run Code Online (Sandbox Code Playgroud)

在此之后我想要NSTextField(或者我应该说包含它的NSClipView)向下滚动以显示其文本的最后一行(显然它应该只在最后一行不可见时滚动,事实上如果那么新行是我记录的第一行,它已经在屏幕上,因此无需向下滚动).

我该如何以编程方式执行此操作?

macos cocoa nstextview

10
推荐指数
3
解决办法
7529
查看次数

滚动UITableView将停止计时器

我是初学者,我正在尝试编写和应用iOS,它将在主屏幕上向用户显示一个从25分钟到0的定时器(由UILabel每隔一秒更新一个文本组成NSTimer)和一个UITableView(嵌入式)在UIViewController主屏幕中),每次定时器到达0时将显示一个单元格.

所以在我控制的主视图中UIViewController我有: - UILabel:对于定时器 - UITableView:每次定时器达到0时显示一个单元格 - UIButton:启动定时器

一切似乎工作得很好,除了滚动UITableView意志停止计时器更新标签,只要用户将手指放在tablewView上.谁能告诉我为什么标签UITableView在滚动时不会改变文字?

PS我认为这个问题可能与我没有使用线程的事实有关,因为我还没有学会使用它们.

iphone xcode objective-c ios

8
推荐指数
3
解决办法
4070
查看次数

如何使用AFNetworking比较SSL证书

在我的iPhone应用程序中,我使用https与自签名SSL证书的连接从服务器下载敏感数据(用户名和密码).

此应用程序仅供私人使用,不适合生产.

我正在使用AFNetworking管理https连接,但由于我的证书未从CA签名,为了使其工作,我必须将以下内容添加到AFURLConnectionOperation类的标题中:

#define _AFNETWORKING_ALLOW_INVALID_SSL_CERTIFICATES_ 1
Run Code Online (Sandbox Code Playgroud)

但有了这个,我的应用程序将允许任何证书.

有没有办法只允许我的服务器上的证书将它捆绑在应用程序中并将其与https连接中服务器提供的证书进行比较?如果可能的话,在安全方面是否会有任何重大优势?

我对安全性很新,我有点困惑.

security ssl https ios afnetworking

8
推荐指数
2
解决办法
9825
查看次数

在UITableView中实现Prev./Next按钮,使第一响应者成为非可见单元格中的UITextField

在我的应用我有一个UITabeViewUITextField每一个细胞里面秒.但是我在实现上一个/下一个按钮时遇到麻烦,使前一个/下一个文本字段UITableViewCell成为第一个响应者.

我已经将UITableViewCell类子类delegate化为在按下prev./next按钮时调用它的某个方法,并将单元格本身作为此方法的参数传递(因此我可以获取其索引路径来计算哪个是索引必须首先响应文本字段的单元格的路径)

在委托方法I的实现中:

  • 获取按下按钮的单元格的索引路径
  • 从该单元格的索引路径中添加或减去1(取决于按下的按钮)
  • 使用-cellForRowAtIndexPath:表视图上的方法获取必须使textfield成为第一响应者的单元格
  • 使文本字段成为第一响应者

问题是该-cellForRowAtIndexPath:方法仅在可见时返回单元格.因此,当单元格不可见时,它将返回nil,并且上述算法将无法工作,而当单元格在屏幕上时,它将正常工作.

这是我的上传代码.按钮,只要它MUInfoMateriaTableViewCell是我的子类,UITableViewCell并且它有一个textField返回其文本字段的属性:

- (void)prevButtonPressedInCell:(MUInfoMateriaTableViewCell *)cell
{
    NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
    NSIndexPath *previousIndexPath = [NSIndexPath indexPathForRow:indexPath.row-1 inSection:indexPath.section];

    MUInfoMateriaTableViewCell *newCell = (MUInfoMateriaTableViewCell *)[self.tableView cellForRowAtIndexPath:previousIndexPath];
    [newCell.textField becomeFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)

有没有办法"获得"一个不可见的单元格,所以我可以让它的文本字段成为第一个响应者?或者你能建议我另一种解决这个问题的算法吗?

iphone uitableview first-responder ios

6
推荐指数
1
解决办法
1937
查看次数

在iOS上进行SSL固定

为了提高我的应用程序的安全性并保护用户免受MITM攻击,我正在尝试使用此帖子的内容对我的自签名证书进行SSL固定.

所以我使用以下代码来比较我从服务器获得的证书和捆绑在应用程序中的证书.

- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
    SecTrustRef serverTrust = challenge.protectionSpace.serverTrust;
    SecCertificateRef certificate = SecTrustGetCertificateAtIndex(serverTrust, 0);
    NSData *remoteCertificateData = CFBridgingRelease(SecCertificateCopyData(certificate));
    NSLog(@"Remote Certificate Data Length: %d",[remoteCertificateData length]);
    NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"apache" ofType:@"crt"];
    NSData *localCertData = [NSData dataWithContentsOfFile:cerPath];
    NSLog(@"Local Certificate Data Length: %d",[localCertData length]);
    if ([remoteCertificateData isEqualToData:localCertData]) {
        NSURLCredential *credential = [NSURLCredential credentialForTrust:serverTrust];
        [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];
    }
    else {
        [[challenge sender] cancelAuthenticationChallenge:challenge];
    }
}
Run Code Online (Sandbox Code Playgroud)

我的代码和我链接的博客文章中唯一不同的是代表我的证书的资源的名称和扩展名(.cer到.crt)以及我添加的两个NSLogs,稍后会显示它们问题是什么

实际上,当执行此代码时,我得到此输出:

2013-05-22 16:08:53.331 HTTPS Test[5379:c07] Remote Certificate Data Length: 880
2013-05-22 …
Run Code Online (Sandbox Code Playgroud)

security ssl foundation ios

6
推荐指数
1
解决办法
2470
查看次数

NSMutableDictionary的objectForKey:方法会返回副本还是对象本身?

类的objectForKey:方法是否NSMutableDictionary返回对象的副本?

如果我有一个NSMutableArray存储在里面NSMutableDictionary,我做了一些修改(比如添加一个对象)到我用objectForKey:字典方法访问的数组,那些修改对于存储在字典中的数组是否有效?

iphone cocoa-touch nsdictionary ios

4
推荐指数
1
解决办法
1288
查看次数

更改框架不会调整UIImageView的大小

在我的iPhone应用程序中,我正在尝试以编程方式调整大小并移动UIImageView,以便将其作为原始设置在iPhone屏幕的左上角,并使其既宽又高,就像屏幕的高度一样.为此,我使用以下代码:

-(void)viewDidLoad
{
     //Getting screen size
     CGRect screenSize = [[UIScreen mainScreen]bounds];

     //Creating the new frame for the UIImageView
     CGRect arect = CGRectMake(0, 0, screenSize.size.height, screenSize.size.height);
     //Setting the image to show

     UIImage *image = [UIImage imageNamed:@"Adele.jpg"];
     self.imageView.image = image;

     //Setting new frame and contentmode
     self.imageView.frame = arect;
     self.imageView.contentMode = UIViewContentModeScaleToFill;
}
Run Code Online (Sandbox Code Playgroud)

self.imageView是我用InterfaceBuilder创建的插座.

问题是当我启动应用程序时,此代码似乎对UIImageView的框架没有任何影响.imageview infact将显示在与IB创建时相同的位置和相同的大小.

你们有没有人知道为什么这段代码不起作用?我错过了什么?

cocoa-touch uikit ios

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