我正在使用Apple的新Swift编程语言并遇到一些问题......
目前我正在尝试读取一个plist文件,在Objective-C中我将执行以下操作以将内容作为NSDictionary获取:
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Config" ofType:@"plist"];
NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:filePath];
Run Code Online (Sandbox Code Playgroud)
如何在Swift中将plist作为字典?
我假设我可以通过以下方式获得plist的路径:
let path = NSBundle.mainBundle().pathForResource("Config", ofType: "plist")
Run Code Online (Sandbox Code Playgroud)
当这工作时(如果它是正确的?):我如何将内容作为字典?
还有一个更普遍的问题:
可以使用默认的NS*类吗?我想是这样......或者我错过了什么?据我所知,默认框架NS*类仍然有效,可以使用吗?
我有一个NSManagedObject用于分组UITableView中的部分.该对象具有"name"和"createdAt"属性.我想在te UI中使用"name"作为节标题,但是按"createdAt"排序.根据文档,第一个sortDescriptor键也必须是NSFetchedResultsController的sectionNameKeyPath.
我建议使用两个sortDescriptors,但它不起作用.这些部分仍按名称排序.
- (NSFetchedResultsController *)fetchedResultsController {
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Object" inManagedObjectContext:[CoreDataHelper instance].managedObjectContext];
[fetchRequest setEntity:entity];
NSSortDescriptor *sortName = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSSortDescriptor *sortDate = [[NSSortDescriptor alloc] initWithKey:@"createdAt" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObjects:sortName, sortDate, nil]];
[fetchRequest setFetchBatchSize:20];
NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:[CoreDataHelper instance].managedObjectContext sectionNameKeyPath:@"name"
cacheName:@"Root"];
self.fetchedResultsController = theFetchedResultsController;
return _fetchedResultsController;
}
Run Code Online (Sandbox Code Playgroud) 我想创建一个带有各种选项的UIViewController,每个选项都可以通过UISwitch启用/禁用.我正在使用Xcode 5和iOS 7部署目标.UITableView包含静态单元格.界面在故事板中创建.
当我将UISwitch添加到单元格(对它contentView)时,我收到此错误:
Exception while running ibtool: *** setObjectForKey: object cannot be nil (key: objectID)
Run Code Online (Sandbox Code Playgroud)
是不是可以将UISwitch添加到静态UITableViewCell?删除UISwitch时,错误消失.

我有一个我创建的iOS库.现在我把这个lib放在一个.framework只有一些.h文件的文件中.现在我想使用Cocoapods而不是框架.
是否可以隐藏.m文件并仅显示一些头文件(如框架)?
根据这个问题,我不明白podspec设置source_files和之间的关系public_header_files.
我认为这public_header_files将是我需要的选项,但我不明白这个属性在做什么.
编辑:
我想我误解了Cocoapods的设计.public_header_files在使用use_framework!设置时似乎有意义.也许我正在尝试迦太基.
我正在使用NSPredicate过滤NSArray并将过滤后的数组用于我的UITableView.当用户在UITextField中输入文本时,我正在使用此过滤.因此,每次UITextField中的文本发生更改时,我都会调用我的过滤器函数.
它看起来像这样:
NSArray *hugeArray = ...;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == %@", input];
_resultArray = [hugeArray filteredArrayUsingPredicate:predicate];
[_myTableView reloadData];
Run Code Online (Sandbox Code Playgroud)
当我使用带有大量对象的NSArray时,输入变得非常慢(UI中的完整输入变慢).是否有可能获得更好的性能或在后台运行已过滤的命令?
不应阻止在UITextField中写入内容.当UITableView在输入后很短的时间后刷新它可能没问题.
我的情况:假设我有一个类Person(NSManagedObject的子类).每次用户单击按钮时,都会创建一个新的Person实例并将其添加到全局NSMutableArray中.此外,新创建的Person实例将添加到子上下文中,如下所示:
NSManagedObjectContext *childContext = [[NSManagedObjectContext alloc] initWithConcurrencyType: NSPrivateConcurrencyType];
[childContext setParentContext: _mainContext];
Run Code Online (Sandbox Code Playgroud)
此外,当单击按钮时,我保存上下文:(它有点复杂,但遵循此结构)
[childContext performBlock:^{
[childContext save:nil];
[_mainContext save:nil];
}];
Run Code Online (Sandbox Code Playgroud)
单击两次或多次(不确定是否取决于总点击次数)后,我的数组中的按钮对象就变为了fault.
根据文档:访问故障对象的属性应该加载持久对象.
即使我访问NSManagedObject的属性,对象仍然是错误的,属性是nil.
为什么对象在我的数组中出错?如何访问故障对象的属性?
编辑:
加载UIViewController时,我从数据存储区中获取所有现有对象:
-(NSArray*)fetchPersons {
NSManagedObjectContext *context = [self managedObjectContext]; //this is _mainContext, it is created with initWithConcurrencyType:NSMainQueueConcurrencyType
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *description = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:context];
[fetchRequest setEntity:description];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"key = %i", aCondition];
[fetchRequest setPredicate:predicate];
return [context executeFetchRequest:fetchRequest error:nil];
}
Run Code Online (Sandbox Code Playgroud)
我正在使用这个NSArray fetchPersons来填充NSMutableArray. …
我正在使用 GCDWebServer 在我的设备上创建一个 HTTP 服务器。网页的实际内容放置在我的应用程序的 Documents 文件夹中。内容包含一个带有引用的 css 和 png 文件的 HTML 文件。问题是 css 和 png 文件无法从服务器访问/使用(我只能看到 HTML 文本内容)。
相关代码:
self.server = [[GCDWebServer alloc] init];
NSString *documents = [[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject] absoluteString];
documents = [documents stringByAppendingPathComponent:@"MyWebsite"];
[self.server addGETHandlerForBasePath:@"/" directoryPath:documents indexFilename:nil cacheAge:0 allowRangeRequests:YES];
__weak typeof(self) weakSelf = self;
[_server addDefaultHandlerForMethod:@"GET" requestClass:[GCDWebServerRequest class] processBlock:^GCDWebServerResponse *(GCDWebServerRequest *request) {
if ([[request path] isEqualToString:@"/status"]) {
return [GCDWebServerDataResponse responseWithText:@"RUNNING"];
}
else if ([[request path] isEqualToString:@"/"]) {
NSString *filePath = [documents stringByAppendingPathComponent:@"mypage.html"];
NSString *html = …Run Code Online (Sandbox Code Playgroud) ios ×6
core-data ×2
cocoapods ×1
gcdwebserver ×1
ios7 ×1
nsarray ×1
nspredicate ×1
objective-c ×1
swift ×1
uiswitch ×1
uitableview ×1