小编Adr*_*ian的帖子

使用UIDocumentPickerViewController在Swift中导入文本

我目前正在参加iOS开发课程,作为我项目的一部分,我的任务是使用UIDocumentPickerViewController导入文本.我发现的每个例子都是a)用Objective-C编写或b)用于导入UIImage文件.

如何设置文本文件的委托方法?

这是我到目前为止所得到的:

我已经设置了iCloud功能.作品

委托的具体内容如下:

class MyViewController: UIViewController, UITextViewDelegate, UIDocumentPickerDelegate
Run Code Online (Sandbox Code Playgroud)

我为我要导入的文本类型设置了属性:

@IBOutlet weak var newNoteBody: UITextView!
Run Code Online (Sandbox Code Playgroud)

我的IBAction设置如下:

@IBAction func importItem(sender: UIBarButtonItem) {

    var documentPicker: UIDocumentPickerViewController = UIDocumentPickerViewController(documentTypes: [kUTTypeText as NSString], inMode: UIDocumentPickerMode.Import)
    documentPicker.delegate = self
    documentPicker.modalPresentationStyle = UIModalPresentationStyle.FullScreen
    self.presentViewController(documentPicker, animated: true, completion: nil)

}
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚下面的线应该是什么.Apple网站上的文档不清楚,我发现的每个例子都是Objective-C或用于图像.

// MARK: - UIDocumentPickerDelegate Methods

func documentPicker(controller: UIDocumentPickerViewController, didPickDocumentAtURL url: NSURL) {
    if controller.documentPickerMode == UIDocumentPickerMode.Import {
        // What should be the line below?
        self.newNoteBody.text = UITextView(contentsOfFile: url.path!) …
Run Code Online (Sandbox Code Playgroud)

ios swift xcode6

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

通过Fabric安装Twitter,登录工作,请求推文的持久性错误

我已经通过Fabric.app在一个项目中安装了Twitter SDK.我可以登录我的Twitter帐户,但是当我做任何与请求推文相关的事情时,我会抛出这些print声明:

print("Failed to load tweets: \(error!.localizedDescription)")
print(error?.localizedFailureReason)
Run Code Online (Sandbox Code Playgroud)

并得到此错误:

Failed to load tweets: Request failed: forbidden (403)
Optional("Twitter API error : Unable to verify your credentials (code 99)")
Run Code Online (Sandbox Code Playgroud)

但是当我这行添加到viewDidLoad我的TVC,我返回一个值:

print("Twitter.sharedInstance().sessionStore.session()?.userID is \(Twitter.sharedInstance().sessionStore.session()?.userID)")
Run Code Online (Sandbox Code Playgroud)

我有一个Fabric条目Info.plist.我没有在Fabric.app安装中改变或操纵它.

在我的AppDelegate.swift中didFinishLoadingWithOptions:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // I tried using the consumerKey/consumerSecret for Fabric & Twitter for S's & G's to no avail
    Twitter.sharedInstance().startWithConsumerKey("myConsumerKey", consumerSecret: "myConsumerSecret")
    Fabric.with([Twitter.self()])
    return …
Run Code Online (Sandbox Code Playgroud)

twitter ios swift twitter-fabric

7
推荐指数
1
解决办法
1091
查看次数

在Swift 2中实现accessoryButtonTappedForRowWithIndexPath:

我正试图accessoryButtonTappedForRowWithIndexPath:在Swift 2中实现UITableViewController.

正如我在下面解释的那样,我认为在创作时我会遗漏一些东西disclosureIndicator,但我不知道是什么.它来自代码,但我的目标操作不会被调用.啊!

要以编程方式执行此操作,我的理解是我需要在返回cellForRowAtIndexPath之前添加detailDisclosure指示符cell.我这样做如下:

// Create disclosure indicator button in the cell
let disclosureIndicatorButton = UIButton(type: UIButtonType.DetailDisclosure)
disclosureIndicatorButton.addTarget(self, action: "disclosureIndicatorPressed:event:", forControlEvents: UIControlEvents.TouchUpInside)
customCell.accessoryType = .DisclosureIndicator
Run Code Online (Sandbox Code Playgroud)

在我的代码中,detailDisclosure V形图被绘制,但我分配给它的目标操作方法不会被调用.

然后我需要在按下时为按钮创建一个处理程序:

func disclosureIndicatorPressed(sender: UIButton, event: UIControlEvents) {
    print("disclosure button pressed")
    // convert touches to CGPoint, then determine indexPath
    // if indexPath != nil, then call accessoryButtonTappedForRowWithIndexPath
}
Run Code Online (Sandbox Code Playgroud)

最后accessoryButtonTappedForRowWithIndexPath包含执行segue的代码,我可以这样做.我错过了什么?

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewDelegate_Protocol/#//apple_ref/occ/intfm/UITableViewDelegate/tableView:accessoryButtonTappedForRowWithIndexPath:

uitableview ios swift swift2

7
推荐指数
1
解决办法
5489
查看次数

比较两个NSDictionaries和Find Difference

我正在开发一个iOS应用程序,我将从服务器获取一个JSON对象,它将填充在UITableView上.

用户可以在tableview上更改值,从而生成新的JSON.现在我想只将delta(两个JSON对象的差异)发送回服务器.我知道我可以遍历两个对象来寻找delta.但只是想知道这个问题是否有任何简单的解决方案.

例如:

NSDictionary *dict1 = {@"Name" : "John", @"Deptt" : @"IT"};
NSDictionary *dict2 = {@"Name" : "Mary", @"Deptt" : @"IT"};

Delta = {@"Name" : "Mary"}
Run Code Online (Sandbox Code Playgroud)

考虑到新的价值是玛丽的关键名称;

提前致谢

objective-c nsdictionary uitableview ios

7
推荐指数
2
解决办法
4168
查看次数

使用 Visual Studio Code 将请求导入 Python

前言:我已经尝试了这篇文章中的每一个建议。他们都没有工作。

我正在尝试将该模块requests导入 Python 文件(使用 Python 2.7.14)。

Visual Studio Code 在控制台中输出了这个:

导入错误:没有名为请求的模块

挖掘后,我发现我没有requests安装,所以我用来自终端的以下命令修复了它:

sudo pip install requests,基于这个答案,有无数的赞成票。

我关闭了 VS Code 并重新启动它,打开我的 Python 文件,运行它,我得到了同样的错误。我开始尝试每一种解决方案,希望一个能奏效。没有一个。

我最近安装了anaconda,我怀疑这是我的问题的根源,所以我卸载了我可以通过的每个 Python 实例,brew以及基于此答案在我的硬盘上随时间累积的其他安装的一部分的杂散安装。

然后我运行后重新安装蟒蛇从无到有brew doctorbrew prune等等。

我还深入研究了 Visual Studio Code 中的代码设置,看看这是否是我的问题所在。建议之一是覆盖设置python中的code-runner.executorMap设置,因此我which python在终端中键入以获取路径python并将 VS Code 的用户设置更新为which python返回的路径。现在,我使用它作为我的code-runner.executorMapfor python

"code-runner.executorMap": {
    "python" : "/usr/bin/python"
}
Run Code Online (Sandbox Code Playgroud)

我已经通过在以下内容中加入几个简单的语句来验证 Python 是否正常工作: …

python python-requests visual-studio-code

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

从UITextView自动检测到的链接打开带有SFSafariViewController的网站

我有一个UIViewControllerUITextView的是自动检测到其超文本链接.它工作正常,但我会用SFSafariViewController打开链接,所以我留在我的应用程序"内部",而不是打开一个单独的浏览器,这是"开箱即用"的行为.

我已经采取了下面的步骤,但网站仍然打开一个单独的Safari浏览器,而不是在我的应用程序内.我没有收到任何错误或警告,但检测到的网站仍在单独的浏览器中打开,而不是在我的应用程序中.该UITextViewDelegate方法似乎没有被调用(我将一个日志语句放入检查).

我看着,UITextViewDelegate我想我想用这种方法来打开被网络检测到的网站UITextView:

- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange {
    // Fill code in here to use SFSafariViewController
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

到目前为止我做了什么:

1)导入SafariServices,制作委托声明,并在MyViewController中声明委托属性.H

@import SafariServices;

@interface MyViewController : UIViewController <UITextViewDelegate, SFSafariViewControllerDelegate>

@property(nonatomic, weak, nullable) id< SFSafariViewControllerDelegate, SFSafariViewControllerDelegate > delegate;
Run Code Online (Sandbox Code Playgroud)

2)在我的.m文件中添加了一个委托部分,并尝试从上面的存根中填写此方法:

- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange {
    SFSafariViewController *websiteToOpen = [[SFSafariViewController alloc]initWithURL:URL entersReaderIfAvailable:YES];
    websiteToOpen.delegate = self;
    [self presentViewController:websiteToOpen animated:YES completion:nil];
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

我确信这是100%我这么做,但我无法超越终点线.我错过了什么?

objective-c mobile-safari uiviewcontroller ios

6
推荐指数
2
解决办法
4187
查看次数

在引导行的链接中包装图像

比我愿意承认试图让图像的一行是在一个可点击的链接,我花更多的时间row是在对齐的中间的图像row不破引导响应。链接工作正常,但是由于图像尺寸的变化(尽管它们都是紧凑高度的景观),对齐方式仍然不正确。我可以使图像在中垂直对齐div.row,但是这样会破坏响应速度,并且图像的尺寸不能正确调整。

这是我尝试过的JSFiddle

这是我想做的事情:

row
--------------------------------------------------------
                  |                  |                  
      image1      |      image2      |      image3      
                  |                  |                  
--------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

这是我能想到的最好的方法:

row
--------------------------------------------------------
      image1      |      image2      |      image3      
                  |      image2      |      image3      
                  |      image2      |            
--------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

这个答案正是我要达到的目的,但是当我使用CSS类时,图像在我眼中并不是垂直居中的。

我在Bootstrap项目中得到的图像都是紧凑的风景图像。尝试在行内垂直对齐图像

我尝试过的

这是我开始的:

<div class="row vertical-align">
    <div class="col-sm-4">
        <a href="#" title=""><img src="../img/my-image-1.png" class="img-responsive"></a>
    </div>
    <div class="col-sm-4">
        <a href="#" title=""><img src="../img/my-image-1.png" class="img-responsive"></a>
    </div>
    <div class="col-sm-4">
        <a href="#" title=""><img src="../img/my-image-1.png" class="img-responsive"></a>
    </div>    
</div>
Run Code Online (Sandbox Code Playgroud)

我可以使所有内容作为可单击的链接显示在一行中,但是由于图像尺寸的细微变化,图像无法在行的垂直中心对齐。我vertical-align在正常屏幕上添加了此内容,但是在调整窗口大小时,它破坏了Bootstrap的响应能力。

.vertical-align {
    display: flex;
    align-items: …
Run Code Online (Sandbox Code Playgroud)

html css twitter-bootstrap

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

UIButton的backgroundImage的内容模式不受尊重

我把在一个应用程序,我即将出版的收尾,我已经enountered困难得到了contentMode一个中UIButton的背景图片被尊重.无论contentMode我指定什么,图像只是在背景中被淹没而不考虑contentMode设置.

我看了一篇涉及这个主题的帖子,但在我的情况下似乎没有做任何事情.

这是从viewDidLoad:

// I tried putting the contentMode lines here...
myButton.imageView!.contentMode = .scaleAspectFit
myButton.contentMode = .scaleAspectFit
myButton.setBackgroundImage(UIImage(named: "myImage.png"), for: .normal)

// ...and here
// myButton.imageView!.contentMode = .scaleAspectFit
// myButton.contentMode = .scaleAspectFit

// I threw this in for S's & G's to see if it would work...it didn't
myButton.translatesAutoresizingMaskIntoConstraints = false
myButton.imageView?.translatesAutoresizingMaskIntoConstraints = true
Run Code Online (Sandbox Code Playgroud)

我不确定我缺少什么,但我放心,这对我来说是一件令人吃惊的事.我欢迎我如何能获得更好的建议contentMode一中UIButton的背景图片被尊重.谢谢你的阅读.

更新

该按钮被键入为自定义按钮,而不是系统按钮.

uibutton ios swift

6
推荐指数
2
解决办法
3683
查看次数

使用Swift 3.0中的NSDataDetector从String中提取地址元素

我正在尝试使用NSDataDetector字符串中的地址.我已经看过NSHipster的文章NSDataDetector以及Apple的NSDataDetector文档.我有以下方法,它将从字符串中提取地址:

func getAddress(from dataString: String) -> [String] {
    let detector = try! NSDataDetector(types: NSTextCheckingResult.CheckingType.address.rawValue)
    let matches = detector.matches(in: dataString, options: [], range: NSRange(location: 0, length: dataString.utf16.count))

    var addressArray = [String]()

    // put matches into array of Strings
    for match in matches {
        let address = (dataString as NSString).substring(with: match.range)
        addressArray.append(address)
    }

    return addressArray
}
Run Code Online (Sandbox Code Playgroud)

我想提取地址的元素,而不是整个地址.在NSHipster的NSDataDetector帖子数据检测器的匹配类型中,我看到的地址组件,如NSTextCheckingCityKey,NSTextCheckingStateKeyNSTextCheckingZIPKey.我无法在NSDataDetector初始化中使用这些键.

我在GitHub上挖了一下,看看我是否能找到一个来自crib的例子,但我能找到的唯一东西是主Swift回购中的Objective-C代码或声明性东西.

我99%肯定我可以拿出一个地址的各个组成部分,但我太愚蠢了,无法弄明白.谢谢你的阅读.我欢迎建议.

regex ios nsdatadetector swift swift3

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

如何在Moya中通过POST请求传递JSON正文

我正在使用moya库发出POST请求。在Tar​​getType中,我看不到任何属性来将参数[JSON body]与POST请求一起传递。在这里,我附加了TargetType

public protocol TargetType {

    /// The target's base `URL`.
    var baseURL: URL { get }

    /// The path to be appended to `baseURL` to form the full `URL`.
    var path: String { get }

    /// The HTTP method used in the request.
    var method: Moya.Method { get }

    /// Provides stub data for use in testing.
    var sampleData: Data { get }

    /// The type of HTTP task to be performed.
    var task: Task { get …
Run Code Online (Sandbox Code Playgroud)

ios swift moya

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