小编nmd*_*ias的帖子

如何在将CocoaPods更新到0.36.x及更高版本后引用Bridging-Header.h中的头文件?

更新到CocoaPods 0.36.x后,我无法将导入添加到我的Bridging-Header.h文件中.我得到"找不到DBSphereView.h文件".

该文件确实存在于:

"Pods/DBSphereTagCloud/DBSphereView.h"
"Headers/public/DBSphereTagCloud/DBSphereView.h"
"Headers/private/DBSphereTagCloud/DBSphereView.h"
Run Code Online (Sandbox Code Playgroud)

我的桥文件:

#ifndef Loan_Bridging_Header_h
#define Loan_Bridging_Header_h
#import "DBSphereView.h"
#endif
Run Code Online (Sandbox Code Playgroud)

我可以使用框架.我参考了一个众所周知的框架(Alamofire),它很棒!

我的podfile:

source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!
pod 'DBSphereTagCloud', '~> 1.0'
pod 'Alamofire', '~> 1.1'
Run Code Online (Sandbox Code Playgroud)

在更新之前,我没有导入头文件的问题.

在将CocoaPods更新为0.36.x后,如何在Bridging-Header.h中引用头文件?

谢谢!

编辑:

我还尝试根据cocoapods.org的"Get Started"示例创建一个单独的项目,但没有成功.使用框架后,我似乎无法在我的桥接头文件中引用头文件.我一定错过了一些细节?

ios ios-frameworks cocoapods swift

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

更改托管对象属性不会触发NSFetchedResultsController更新表视图

我有一个带谓词的fetchedResultsController,其中"isOpen == YES"

在调用closeCurrentClockSet时,我将该属性设置为NO.因此,它应该不再出现在我的tableView上.

出于某种原因,这种情况并没有发生.

有人可以帮我解决这个问题吗?

-(void)closeCurrentClockSet
{

    NSPredicate * predicate = [NSPredicate predicateWithFormat:@"isOpen == YES"];

    NSArray *fetchedObjects =
        [self fetchRequestForEntity:@"ClockSet"
                      withPredicate:predicate
             inManagedObjectContext:[myAppDelegate managedObjectContext]];

    ClockSet *currentClockSet = (ClockSet *)fetchedObjects.lastObject;

    [currentClockSet setIsOpen:[NSNumber numberWithBool:NO]];

}
Run Code Online (Sandbox Code Playgroud)

-

通过调用自定义fetchRequestForEntity:withPredicate:inManagedObjectContext方法,我有更多方法,使用完全相同的方法.

在这些方法中,更改属性时,tableView会正确更新!但是这一个上面(closeCurrentClockSet),没有!我无法弄清楚为什么.

-

我对fetchedResultsController的实现来自Apple的文档.

另外,另一个细节.如果我将我的应用程序发送到后台.关闭它并重新打开,tableView显示更新应该!

我尽力在stackOverflow上关注之前的问题.没运气.我也NSLogged这个骨头.正确获取对象.这是正确的.isOpen属性正在更新为NO.但由于某种原因,我的fetchedResultsController不更新tableView.

我确实尝试过几个"锤子"解决方案,比如reloadData和调用performFetch.但那没用.或者使用它们会有意义......

编辑:抓住它,DID工作,在我的resultsController上的performFetch之后调用reloadData imediatly但是使用reloadData正在敲定一个解决方案.此外,它还会取消所有动画.我希望我的控制器自动更新我的tableView.

有人可以帮我解决这个问题吗?

任何帮助是极大的赞赏!

谢谢,

努诺

编辑:

完整的实施.

fetchedResultsController非常标准和简单.其他一切都来自Apple的文档

- (NSFetchedResultsController *)fetchedResultsController
{

    if (_fetchedResultsController) {
        return _fetchedResultsController;
    } …
Run Code Online (Sandbox Code Playgroud)

objective-c nsfetchedresultscontroller nsmanagedobject nsmanagedobjectcontext ios

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

UITableViewCell textLabel,在使用GCD时直到滚动或触摸发生时才会更新

有人可以帮我解决这个问题吗?

我的UITableViewCell textLabel在我滚动触摸之前不会更新.

视图控制器负载,它显示了细胞的适量.但内容是空白的.我必须触摸它或滚动才能显示我的textLabel.

我在这里做错了吗?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    }

    [[cell textLabel] setFont: [UIFont systemFontOfSize: 32.0]];

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        NSDictionary * data = [self timeForObject: [self.months objectAtIndex:indexPath.row]];

        dispatch_async(dispatch_get_main_queue(), ^{

            NSString *time      = [data objectForKey:@"Time"];
            NSString *totalTime = [data objectForKey:@"Total Time"];

            NSString * textLabel  = [NSString stringWithFormat:@" …
Run Code Online (Sandbox Code Playgroud)

objective-c uitableview grand-central-dispatch ios

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

Swift有一个隐含的对象初始化器,就像在C#中一样吗?

在C#中,我们有Object Initializers,如下所示:

    Person obj = new Person
    {
        FirstName = "Craig",
        LastName = "Playstead",
    };
Run Code Online (Sandbox Code Playgroud)

斯威夫特有这个吗?

举个例子,我有这个代码:

var config = IndicatesConfig()
config.name = NSLocalizedString(Localizable.FOLDERS, comment: "").uppercaseString
config.style = .DetailHeader
return config
Run Code Online (Sandbox Code Playgroud)

但是想做一些事情:

var config = IndicatesConfig() {
    name = NSLocalizedString(Localizable.FOLDERS, comment: "").uppercaseString
    style = .DetailHeader
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

编辑:

我没有引用类初始化器的明确定义.请记住C#示例中显示的语法.

swift

15
推荐指数
2
解决办法
1645
查看次数

如何在.NET Core中构建和运行时禁用浏览器启动

我正在macOS中开发一个带有.NET Core的Web API,并部署到Linux.我完全没兴趣使用浏览器.但是,从Visual Studio代码构建和运行(调试与否)时,浏览器每次都会启动.

我必须关闭选项卡,删除浏览器,转到Paw,我实际测试API,然后返回到VS Code.

每次这样做都很烦人.

是否有一些配置禁用浏览器启动?

谢谢

visual-studio-code asp.net-core

13
推荐指数
6
解决办法
3488
查看次数

如果你有更多的cpu核心,Xcode会并行编译更多的Swift文件吗?

在构建项目时,我可以看到Xcode在报表导航器中的Build Log中同时处理4个Swift文件.

我还看到,在编译时,Activity Manager中有4个进程,全部称为"Swift".

它似乎正在充分利用可用的处理能力来完成它的工作,所以我不打算改变它.但是,我正在使用双核i7处理器.

Quad Core i7能够并行编译8个文件吗?如果是这样,如果它是6个核心,它会扩大规模吗?

至少有四核的人可以做一个测试来确认吗?

我正在使用Xcode 6.3.1

谢谢!

xcode swift

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

如何在Xcode中彻底重命名通用框架?

我正在构建一个最初名为Iris的框架.

当我试图将它作为Cocoapod发布时,我发现已经有了一个"Iris"框架.

虽然它们具有完全不同的目的和作者,但我不能将其作为具有此名称的pod发布.所以我做了不可想象的事!

我尝试将整个事物重命名为IrisKit.

我的Xcode项目,现在名为IrisKit,有6个目标:

3框架目标

- IrisKit iOS
- IrisKit tvOS
- IrisKit macOS
Run Code Online (Sandbox Code Playgroud)

3示例项目

- IrisKit Example iOS
- IrisKit Example tvOS
- IrisKit Example macOS
Run Code Online (Sandbox Code Playgroud)

不幸的是,我的示例项目不会让我导入IrisKit,并显示以下错误:

warning: file 'FeedTableViewController.swift' is part of module 'IrisKit'; ignoring import
Run Code Online (Sandbox Code Playgroud)

什么是开发人员?

macos xcode ios swift tvos

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

如果没有连接,Internet或其他方式,XMLParser的子类与contentsOfURL初始化程序崩溃,以获取URL的内容

我正在尝试解决一个问题,如果没有连接来获取指定URL的内容(例如,应用程序处于脱机状态),则Feed解析框架(FeedKit)会崩溃.

因此,它适用于应用程序在线和仅在线时.

每当我尝试Parser使用超类的便利初始化器来实例化我的类时XMLParser

convenience init?(contentsOf url: URL)
Run Code Online (Sandbox Code Playgroud)

框架崩溃:

在此输入图像描述

为了尝试隔离问题,并排除框架中引入的一些错误,我在一个干净的项目中重新创建了这个问题:

一个像魅力一样的解决方案,使用Foundation框架的普通的XMLParser:

let feedURL = URL(string: "http://images.apple.com/main/rss/hotnews/hotnews.rss")!

if let parser = XMLParser(contentsOf: feedURL) { // Works as expected
    print("Got instance \(parser)")
}
Run Code Online (Sandbox Code Playgroud)

而另一个没有:

class Parser: XMLParser { }

let feedURL = URL(string: "http://images.apple.com/main/rss/hotnews/hotnews.rss")!

if let parser = Parser(contentsOf: feedURL) { // Crash!
    print("Got instance \(parser)")
}
Run Code Online (Sandbox Code Playgroud)

在第二个例子中,我所做的只是对XMLParser类进行子类化.没有覆盖或自定义代码.它仍然崩溃.

我错过了什么吗?

谢谢

编辑:

向Apple提交了错误报告,编号为28904764,并为此问题开辟了一个Radar.

我相信这是苹果公司最终的一个错误,但更愿意是错误的并且有一个修复.

nsxmlparser ios swift swift3

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

如何在UIDocumentInteractionController发送的电子邮件中设置To和Subject字段?

我正在使用UIDocumentInteractionController发送带有PDF附件的电子邮件,如下所示:

我首先展示PDF文件

-(void)showPDFFile
{    
    NSURL *url = [NSURL fileURLWithPath:_filePath];

    if (url) {
        _documentInteractionController =
            [UIDocumentInteractionController interactionControllerWithURL:url];

        [_documentInteractionController setDelegate: self];
        [_documentInteractionController presentPreviewAnimated:YES];
    }
}


- (UIDocumentInteractionController *)setupControllerWithURL:(NSURL *)fileURL
                                              usingDelegate:(id <UIDocumentInteractionControllerDelegate>)interactionDelegate {

    UIDocumentInteractionController *interactionController =
        [UIDocumentInteractionController interactionControllerWithURL: fileURL];

    [interactionController setDelegate: interactionDelegate];
    return interactionController;
}
Run Code Online (Sandbox Code Playgroud)

显示PDF文件时,用户单击"导出"选项,将显示iOS的"打开方式"视图.

现在单击该电子邮件会打开一个View Controller,准备发送电子邮件.

如何以编程方式设置To:CC/BCC和Subject字段?

谢谢!

objective-c ios uidocumentinteraction

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

如何将多个驱动程序与RxSwift正确组合?

我正在将一个viewDidAppearfilter驱动程序与RxSwift 结合起来.他们工作得很好.但是当我引入第三个驱动程序时,它会停止调用flatMapLatest最新的组合.

在我的View Controller中,我有以下驱动程序:

let filter: Driver<String>
let viewDidAppear: Driver<Void>
let refresh: Driver<Void>
Run Code Online (Sandbox Code Playgroud)

在我的视图模型中:

// On viewDidAppear, I download a list of portfolios

let viewDidAppearPortfolios = viewDidAppear
    .flatMapLatest({ (_) -> Driver<Result<[PortfolioModel]>> in        
        return networkService.request(Router.portfolios)!
            .responseCollections()
            .trackActivity(fetching)
            .asDriver(onErrorJustReturn: .failure(NSError()))

    })
    .flatMapLatest({ (result: Result<[PortfolioModel]>) -> Driver<[PortfolioModel]> in

        switch result {
        case .success(let value): return Driver.just(value)
        case .failure(_): return Driver.just([])
        }

    })

// Then I combine with a filter from my search bar.

self.portfolios = Driver.combineLatest(viewDidAppearPortfolios, filter) …
Run Code Online (Sandbox Code Playgroud)

swift rx-swift rx-cocoa

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