小编Mea*_*her的帖子

带反斜杠的JSON编码

我使用Alamofire和SwiftyJSOn来解析JSON输出.它工作得很好,但有些网站给json提供了转义输出.我在下面使用Alamofire

    Alamofire.request(.POST, url, parameters: param, encoding: .JSON)
        .responseJSON { (req, res, json, error) in
         var json = JSON(json!)
Run Code Online (Sandbox Code Playgroud)

Site为我提供了带有转义字符串的JSON结果,因此SwiftyJSON无法对其进行解码.我怎样才能在下面转换

{
    "d": "{\"UniqeView\":{\"ArrivalDate\":null,\"ArrivalUnitId\":null,\"DeliveryCityName\":null,\"DeliveryTownName\":null},\"ErrorMessage\":null,\"Message\":null,\"IsFound\":false,\"IsSuccess\":true}"
}
Run Code Online (Sandbox Code Playgroud)

喜欢的东西

{
       "d": {
          "UniqeView": {
             "ArrivalDate": null,
             "ArrivalUnitId": null,
             "DeliveryCityName": null,
             "DeliveryTownName": null
          },
          "ErrorMessage": null,
          "Message": null,
          "IsFound": false,
          "IsSuccess": true
       }
    }
Run Code Online (Sandbox Code Playgroud)

swift alamofire swifty-json

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

NSFetchedResultsController XCode 7问题

Xcode 7 beta 6和NSFetchedResultsController今天让我很头疼.如果我使用Xcode 6编译相同的(使用Swift 2修复)代码,程序可以在设备和模拟器(iOS 7,iOS8)上运行.但是,如果我使用Xcode 7 beta 6进行编译,则只要我更新Core Data,程序就会在设备(iOS 8.4)上崩溃,并显示以下错误消息.

我得到类似于下面的错误

CoreData:错误:严重的应用程序错误.在调用-controllerDidChangeContent:期间,从NSFetchedResultsController的委托中捕获到异常.无效更新:第0节中的行数无效.更新(2)后现有部分中包含的行数必须等于更新前该部分中包含的行数(2),加上或减去数字从该部分插入或删除的行(插入2个,删除1个)并加上或减去移入或移出该部分的行数(0移入,0移出).用户信息(null)

有时它会因为另一个错误而崩溃

从空闲列表中出列的无效指针***在malloc_error_break中设置断点以进行调试

//NSFetchedResultsController delegates



func controllerWillChangeContent(controller: NSFetchedResultsController) {
    self.tableView.beginUpdates()
}

func controller(controller: NSFetchedResultsController, didChangeSection sectionInfo: NSFetchedResultsSectionInfo, atIndex sectionIndex: Int, forChangeType type: NSFetchedResultsChangeType) {
    switch type {
    case .Insert:
        self.tableView.insertSections(NSIndexSet(index: sectionIndex), withRowAnimation: .Fade)
    case .Delete:
        self.tableView.deleteSections(NSIndexSet(index: sectionIndex), withRowAnimation: .Fade)
    default:
        return
    }
}

func controller(controller: NSFetchedResultsController, didChangeObject anObject: AnyObject, atIndexPath indexPath: NSIndexPath?, forChangeType type: NSFetchedResultsChangeType, newIndexPath: NSIndexPath?) {
    switch type {
    case .Insert:
        print("Insert New: \(newIndexPath) Old: …
Run Code Online (Sandbox Code Playgroud)

xcode core-data ios swift

9
推荐指数
1
解决办法
2663
查看次数

如何向Cocoapods添加依赖项

我正在尝试创建一个Cocoapods库.我的图书馆将包含Google-Mobile-Ads-SDK作为依赖项.我使用了以下命令

pod lib create BannerViewController
 > my email address
What language do you want to use?? [ ObjC / Swift ]
 > Swift
Would you like to include a demo application with your library? [ Yes / No ]
 > Yes
Which testing frameworks will you use? [ Quick / None ]
 > None
Would you like to do view based testing? [ Yes / No ]
 > No  
Run Code Online (Sandbox Code Playgroud)

然后我编辑了BannerViewController.podspec添加了以下行

s.dependency 'Google-Mobile-Ads-SDK', '~> 7.0'
Run Code Online (Sandbox Code Playgroud)

我试着用 pod lib lint BannerViewController.podspec

[!] …
Run Code Online (Sandbox Code Playgroud)

ios cocoapods

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

RxSwift地图和flatMap的区别

我无法理解map和flatMap在RxSwift中的区别.在RxSwift操场示例和书籍中,flatMap用作转换Observables,它具有内部Observable属性.

但是我看到flatMap直接用于基本类型的Observable.例如,对于下面的代码,它们都产生相同的输出.有人可以帮我理解map和flatMap之间的区别

struct Student {
    let score:Int
}

let ryan = Student(score:80)
let student = PublishSubject<Student>()

let deneme = student.map({ val in
    return Student(score: val.score+10)
})
deneme.subscribe(onNext: {
    print("StudentMAP: \($0.score)")
})

let deneme2 = student.flatMap({ val -> Observable<Student> in
    return Observable.of(Student(score: val.score + 10))
})

deneme2.subscribe(onNext: {
    print("StudentFlatMAP: \($0.score)")
})

 student.onNext(ryan)
Run Code Online (Sandbox Code Playgroud)

swift rx-swift

6
推荐指数
3
解决办法
6305
查看次数

CoreData在context.fetch和fetchRequest.execute之间的区别

我的目标是iOS 10,无法确定应该选择哪种方法,为什么?由于以下两个代码均返回对象数组。

    CoreDataStack.shared.viewContext.perform {
        do {
            let allObjects = try CoreDataStack.shared.viewContext.fetch(fetchRequest)
            print(allObjects)
        } catch {
            print("Error: \(error)")
        }
    }
    CoreDataStack.shared.viewContext.perform {
        do {
            let allRules = try fetchRequest.execute()
            print(allRules)
        } catch {
            print("Error: \(error)")
        }
    }
Run Code Online (Sandbox Code Playgroud)

core-data swift

5
推荐指数
0
解决办法
582
查看次数

承诺即使已经解决也会挂起

我正在使用request-promise模块来检查网站是否正在使用代理.我试图找到足够快的代理,在5秒内回答.因此,如果请求在5秒内没有超时,我只会添加对象.

对于某些代理,即使promise解析,节点脚本也会挂起一段时间.我找不到这种延误的原因.我看到它打印Done但它挂起.1分钟后10秒钟,脚本退出.由于我的代码或打开的套接字等操作系统问题,这是否挂起?

const rp =  require('request-promise');
const testProxies = [
    {
       "ipAddress": "80.241.219.83",
       "port": 3128,
    },
    {
        "ipAddress": "45.55.27.246",
        "port": 80
    },
    {
        "ipAddress": "144.217.197.71",
        "port": 8080,
    },
    {
        "ipAddress": "104.131.168.255",
        "port": 80,
    },
    ];

function CheckSites(sitesArray,site) {
    let ps = [];
    for (let i = 0; i < sitesArray.length; i++) {
        let proxy = sitesArray[i];

        let ops = {
            method: 'GET',
            resolveWithFullResponse: true,
            proxy: 'http://' + proxy.ipAddress + ':' + proxy.port,
            uri:site,
        };
        let resp …
Run Code Online (Sandbox Code Playgroud)

javascript node.js requestjs

5
推荐指数
1
解决办法
741
查看次数

UISearchController保留问题

我正在尝试使用UISearchController但是我面临保留我无法解决的问题.MainTableview有两个部分.

第1节

过滤数据基于一些正则表达式

第2节

所有数据

我将UISearchController添加到我的tableview中,并将ResultsTableController作为resultsTableController附加.当用户搜索某些东西时,它工作,ResultsTableController出现,因为我将tableview委托设置为self,从我的MainTableViewController中的ResultsTableController调用didSelectRowAtIndexPath中选择项目.但是,如果用户从resultsTableController中选择了某些内容,则会出现分配问题.

以下是针对不同场景的

  • 用户不搜索任何内容,只需从MainTableview中选择一个项目,我就会看到deinit消息
  • 用户搜索内容,取消搜索,从MainTableview中选择项目,我看到deinit消息
  • 用户搜索某些东西,并从ResultsTableController中选择一个项目,我的视图控制器中没有得到deinit

MainTableViewController.swift

var searchController: UISearchController!

// Secondary search results table view.
var resultsTableController: ResultsTableController!
var allCompanies = ["Data1","Data2","Data3"]

override func viewDidLoad() {
    super.viewDidLoad()
     resultsTableController = ResultsTableController()
    // We want to be the delegate for our filtered table so didSelectRowAtIndexPath(_:) is called for both tables.
    resultsTableController.tableView.delegate = self
    searchController = UISearchController(searchResultsController: resultsTableController)
    searchController.searchResultsUpdater = self
    searchController.searchBar.sizeToFit()
    tableView.tableHeaderView = searchController.searchBar

    searchController.delegate = self
    searchController.dimsBackgroundDuringPresentation = false 
    searchController.searchBar.delegate = self   
    definesPresentationContext = true
    } …
Run Code Online (Sandbox Code Playgroud)

uitableview ios swift uisearchcontroller

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

如何使用Swift将每个句子中的第一个单词大写

通过考虑用户区域设置,如何将段落中每个句子的第一个单词大写?我想要实现的是无论句子里面的情况如何,每个单词的第一个字母都是大写的,其余的都是小写的.首先将所有内容转换为小写,然后获得第一个字母并制作大写字母,最后将它们一起添加,我只能做一个句子.我的问题与如何使用Swift iOS将字符串中的每个单词大写不同,因为我不想将每个单词大写.我只想把每个句子的第一个单词弄清楚.capitalizedString

"this is first sentence. this is second sentence."
Run Code Online (Sandbox Code Playgroud)

"This Is First Sentence. This Is Second Sentence."
Run Code Online (Sandbox Code Playgroud)

我想要的是

"This is first sentence. This is second sentence."
Run Code Online (Sandbox Code Playgroud)

我的问题也不同于每个句子的首字母大写,因为@ rintaro的代码不适用于我的下面的例子.它保留原始文本中的大写字母完整.使用@ rintaro的代码;

之前

"someSentenceWith UTF text ????. anotherSentence?üÜ?"
Run Code Online (Sandbox Code Playgroud)

"SomeSentenceWith UTF text ????. AnotherSentence?üÜ?."
Run Code Online (Sandbox Code Playgroud)

我想要实现的目标,

"Somesentencewith utf text i???. Anothersentence?üü?." 
Run Code Online (Sandbox Code Playgroud)

我的代码只能进行部分转换.

var description = "someSentenceWith UTF text ????. anotherSentence?üÜ?"
description = description.lowercaseStringWithLocale(NSLocale.currentLocale())
let first = description.startIndex
let rest = advance(first,1)..<description.endIndex
let capitalised = description[first...first].uppercaseStringWithLocale(NSLocale.currentLocale()) + …
Run Code Online (Sandbox Code Playgroud)

nsstring swift

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

创建无限背景从右到左滚动

我正在尝试创建一个动画来创建一个移动物体的幻觉.因此,对象将保持在相同位置,但是比屏幕宽度宽的背景图像视图将无限移动.我的代码不是很顺利.

    let backgroundView = UIView()
    backgroundView.backgroundColor = UIColor.blueColor()
    backgroundView.frame = CGRect(x: 0, y: 120, width: 50, height: 50)
    self.view.addSubview(backgroundView)
    let options = UIViewAnimationOptions.Repeat | UIViewAnimationOptions.CurveLinear

    UIView.animateWithDuration(2.0, delay: 0.0, options: options, animations: {
        backgroundView.frame = CGRect(x: 420, y: 120, width: 50, height: 50)
        }, completion: nil) 
Run Code Online (Sandbox Code Playgroud)

uiview uiviewanimation swift

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

JSON stringify将0转换为null

我试图将我的对象转换为JSON但它不会将我的枚举转换为0.当我打印枚举时我得到0但是当我在对象内部使用它时它变为空.如果我使用字符串,而不是整数,它的工作原理.

(function () {
    'use strict';
    var ItemStatus = {
        'Prepared': 0,
        'Ongoing': 1,
        'Finished': 2
    };
    module.exports = ItemStatus;
})();

(function () {
    'use strict';
    var ItemStatus = require('./itemstatus');

    function ItemDetail(detail) {
        detail = detail || {};

        this.message = detail.message || null;
        this.location = detail.location || null;
        this.status = detail.status || null;
        this.date = detail.date || null;

    }

    module.exports = ItemDetail;
})();

(function () {
    'use strict';

    var ItemDetail = require('./itemdetail');
    var ItemStatus = require('./itemstatus');

    function Item(item) {

        item …
Run Code Online (Sandbox Code Playgroud)

javascript node.js

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

使用Alamofire JSOn和HTML创建通用提取器

我正在尝试基于网络报废启动一个项目.我已经为JSON的不同平台设置了工具我使用SwiftyJSON,而对于原始HTML我使用了hpple.我的问题是我正在尝试为内容设置一些泛型类,并为内容的fetcher设置一些泛型类.因为每个操作都是这样的,

登录如果有用户名或密码提供它.如果它具有验证码显示并使用结果使用Alamofire Scrap获取数据,则可以使用JSON或HTML填充内容类.

我想知道是否有办法定义某种协议,枚举或通用模板,以便每个类我可以定义这些不同的功能.我想如果我做不到这一点,我会一遍又一遍地编写相同的代码.这就是我想出的.如果你能帮助我正确设置,我将不胜感激.

enum Company:Int {
    case CNN
    case BBC
    case HN
    case SO 

    var captcha:Bool {
        switch self {
        case CNN:
            return false
        case BBC:
            return true
        case HN:
            return true
        case SO:
            return false
        }
    }
    var description:String {
        get {
            switch self {
            case CNN:
                return "CNN"
            case BBC:
                return "BBC"
            case HN:
                return "Hacker News"
            case SO:
                return "Stack Overflow"
            }
        }
    }
}

class Fetcher {
    var username:String?
    var password:String?
    var url:String
    var company:Company …
Run Code Online (Sandbox Code Playgroud)

json swift alamofire

0
推荐指数
1
解决办法
838
查看次数

WatchOS存储和共享数据

我有一个核心数据应用程序。就像是说一个新闻应用。每个条目都有名称,id,日期,发布者,详细信息等。主要的iOS应用可以包含很多News条目。我只想显示WatchOS应用程序的前三个新闻。由于获取新闻条目需要使用键盘,因此我无法从Watch端启动传输。共享数据的最佳策略是什么?我想过以下情况

  1. 使用WatchConnectivity transferFile发送核心数据文件

    • 优点:容易
    • 如果尚未将更改保存到上下文,则大量不必要的数据,可能没有最新数据。
  2. 每当添加新闻时,在保存到CoreData之前,请先通过WatchConnectivity发送。

    • 优点:总是相同的数据,
    • 缺点:大量不必要的数据,要保存到新数据库的额外操作
  3. 将数据保存到核心数据后,查询最后三个对象并将其发送。

    • 优点:数据量少,
    • 缺点:首先需要将NSManagedObject转换为另一个对象,可能会发送相同的数据

您能帮我找到一种更好的将iOS应用与WatchOS应用同步的方法吗?谢谢。

core-data ios watchkit

0
推荐指数
1
解决办法
1126
查看次数