是什么区别NSTimer,NSTask,NSThread而且NSRunloop,是有关于何时使用它们中的每一个准则?
我正在使用NSFetchedResultsController具有谓词的表视图内容:
[NSPredicate predicateWithFormat:@"visible == %@", [NSNumber numberWithBool:YES]]
Run Code Online (Sandbox Code Playgroud)
在后台线程使用单独NSManagedObjectContext我更新几个实体并将其visible值更改NO为YES.保存,合并主线程中的更改NSManagedObjectContext.但是,NSFetchedResultsController的fetchedObjects没有改变.控制器也不会调用-controller:didChangeObject:...委托.如果实体在主线程上以相同的方式更新(我的测试应用程序调用相同的方法),一切都按预期工作.
通知也NSUpdatedObjectsKey包含这些对象.
目前我发现的唯一解决方案是呼叫每个NSUpdatedObjectsKey实体:
NSManagedObjectContext *context = ... // main thread context
[context existingObjectWithID:[object objectID] error:nil]
Run Code Online (Sandbox Code Playgroud)
此问题仅适用于先前与谓词不匹配的更新对象.
我错过了一些明显的东西吗
你怎么把一个NSUInteger变成一个NSString?我已经尝试了,但我一直NSString都是0.
NSUInteger NamesCategoriesNSArrayCount = [self.NamesCategoriesNSArray count];
NSLog(@"--- %d", NamesCategoriesNSArrayCount);
[NamesCategoriesNSArrayCountString setText:[NSString stringWithFormat:@"%d", NamesCategoriesNSArrayCount]];
NSLog(@"=== %d", NamesCategoriesNSArrayCountString);
Run Code Online (Sandbox Code Playgroud) 我有一个NSFetchedResultsController和几个操作更新托管对象在不同的线程上通过NSOperationQueue.
FRC(带有谓词)看起来像这样:
- (NSFetchedResultsController*)fetchedResultsController
{
if(fetchedResultsController) return fetchedResultsController;
NSManagedObjectContext* mainContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:[NSEntityDescription entityForName:@"Check" inManagedObjectContext:mainContext]];
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"isSync == %@", [NSNumber numberWithBool:NO]]];
[fetchRequest setFetchBatchSize:10];
fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:mainContext sectionNameKeyPath:nil cacheName:nil];
fetchedResultsController.delegate = self;
[fetchRequest release], fetchRequest = nil;
return fetchedResultsController;
}
Run Code Online (Sandbox Code Playgroud)
主线程和线程操作具有自己的托管对象上下文.他们只共享同一个协调员.
在线程操作中,我将isSync属性从更改NO为YES.要知道Check要更新的实体是什么,主要上下文将传递给线程化的a NSManagedObjectID.线程操作检索托管对象,如下所示:
-(void)main
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSManagedObjectContext *exportContext = [[NSManagedObjectContext alloc] …Run Code Online (Sandbox Code Playgroud) core-data nsfetchedresultscontroller nsoperationqueue nsmanagedobjectcontext ios
我试图从我的表视图中删除一行,到目前为止一直没有成功.我一直收到这个错误:
"由于未捕获的异常'NSInternalInconsistencyException'终止应用程序,原因:'无效更新:第0节中的行数无效.更新后的现有节中包含的行数(5)必须等于包含的行数在更新(5)之前的那一部分,加上或减去从该部分插入或删除的行数(0插入,1删除).'"我用来填充表视图的数组在该类中声明,也是我从sqlite db获取我的数组的对象.
我用来尝试删除行的代码如下.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the row from the data source
[categoryArray objectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];
}
else if (editingStyle == UITableViewCellEditingStyleInsert) {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
Run Code Online (Sandbox Code Playgroud)
现在我希望得到回答的问题:
- 如何正确删除行?
- 如果它只是在tableView中留下的那一行,我将面临删除行吗?
- 我可以将方法中使用的tableView更改为我在.h文件中声明的UITableView吗?
非常感谢.
编辑
- 全.m代码
#import "DeleteCategoryTableView.h"
#import "KeyCryptAppAppDelegate.h"
@implementation DeleteCategoryTableView
@synthesize …Run Code Online (Sandbox Code Playgroud) 是否有正确使用这些方法的指导方针?特别是,我想知道我可以在其中使用什么类型的代码.
例如,如果我必须调用从WS检索数据的方法,我在哪里调用它?我在哪里可以注册/取消注册NSNotification?等等
objective-c uiviewcontroller viewdidappear viewwillappear ios
我试图用一个UISearchBar查询的多个属性NSManagedObject
我有一个NSManagedObject叫Person,每个人都有一个name和socialSecurity财产.现在我的代码可以为其中一个属性或另一个属性执行搜索(获取),但不能同时执行这两个属性.
- (void) performFetch
{
[NSFetchedResultsController deleteCacheWithName:@"Master"];
// Init a fetch request
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"MainObject" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
// Apply an ascending sort for the color items
//NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"Term" ascending:YES selector:nil];
NSSortDescriptor *sortDescriptor;
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"fullName" ascending:YES selector:@selector(caseInsensitiveCompare:)];
NSArray *descriptors = [NSArray arrayWithObject:sortDescriptor];
[fetchRequest setSortDescriptors:descriptors];
// Recover query
NSString *query = self.searchDisplayController.searchBar.text;
//if (query …Run Code Online (Sandbox Code Playgroud) 在我的iOS应用程序中,我试图从(RESTful)服务器获取和发布数据.我认为RestKit和AFIncrementalStore都是不错的选择.但是,我还需要能够脱机保存数据并在应用程序联机时将其推送到服务器.
我试图了解哪个是一个更好的框架用于应用程序.
此外,从一些在线资源中,似乎在AFIncrementalStore上使用故障可能会导致处理ManagedContext(通常是mainThread)的线程在提供网络请求以获取属性时卡住.这是一个大问题吗?
PS:添加afnetworking标签,因为afincrementalstore标签不可用
我在Xcode的"Crashes"部分检索到以下崩溃日志时遇到了一些问题.此崩溃报告仅影响少数设备.
我已经分析了这个问题,但我猜这是Apple框架上的一个错误.但我找不到复制它的方法.
这里有类似的讨论:在removeObserver中帮助崩溃:forKeyPath : .
任何提示?
线程0名称:线程0崩溃:
0基础
0x23507591 _NSKeyValueReplaceObservationInfoForObject + 69(NSKeyValueObserving.m:1166)1基金会
0x23506fe7 - [NSObject(NSKeyValueObserverRegistration)_removeObserver:forProperty:] + 327(NSKeyValueObserving.m:1552)2基础
0x23506b03 - [NSObject(NSKeyValueObserverRegistration)removeObserver:forKeyPath:] + 163(NSKeyValueObserving.m:1696)3基础
0x235069a7 - [NSObject(NSKeyValueObserverRegistration)removeObserver:forKeyPath:context:] + 219(NSKeyValueObserving.m:1663)4 ApplicationName 0x0002e233 - [Supervisor removeObjectObserver:forKeyPath:] + 115(Supervisor.m:344)
这里removeObjectObserver:forKeyPath:是
- (void) removeObjectObserver:(id)object forKeyPath:(NSString *)keyPath {
@try {
[object removeObserver:self forKeyPath:keyPath context:PrivateKVOContext];
} @catch (NSException *exception) { }
}
Run Code Online (Sandbox Code Playgroud) 当我尝试转换类似0.1的内容(来自文本框中的用户)时,我的值b始终为false.
bool b = Decimal.TryParse("0.1", out value);
Run Code Online (Sandbox Code Playgroud)
怎么可以在这里工作?
ios ×5
objective-c ×4
core-data ×3
iphone ×2
nspredicate ×2
afnetworking ×1
c# ×1
cocoa ×1
crash ×1
decimal ×1
ios5 ×1
nsstring ×1
nsuinteger ×1
restkit ×1
tryparse ×1
uitableview ×1