小编Mic*_*all的帖子

申请将终止通知和保存草稿(核心数据)

如果用户当前在我的编辑视图控制器中,我希望能够在用户关闭我的应用程序时保存更改.为此,我正在观察UIApplicationWillTerminateNotification共享应用程序.在我的app委托中,我使用该applicationWillTerminate:方法关闭并释放所有核心数据上下文.

我发现的问题是任何观察者对通知作出反应之前applicationWillTerminate:,app委托中的方法被调用.这意味着在我的编辑视图控制器有机会保存任何内容之前,我的核心数据堆栈已经发布并关闭!UIApplicationWillTerminateNotification

这通常是如何克服的,因为我看不到方法!

非常感谢,

迈克尔

iphone core-data

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

Git合并二进制文件(特别是Xcode项目文件)

我在git下有一个Xcode项目,而且我的"master"分支有一个"实验性"分支.自分支以来,两个分支都有分歧(所以没有快进!),我正在将"实验"合并到我的"主"分支中.

我已经设置了一个.gitattributes文件来将特定的Xcode文件(project.pbxproj)视为二进制文件,因为它应该被视为二进制文件.但是,我不确定如何合并它.我不确定那个特定文件是做什么的,但是如果它处理了哪些文件被添加到项目中,我就无法合并它们,因此我必须手动将某些文件添加回项目(可能不是记得他们所有).其他人如何处理这种情况?

此外,我已经读过你必须手动更新二进制文件(显然)或复制不同的版本.但是,一旦进入合并过程,我工作副本中的文件就是"主"版本.我如何访问"实验"版本?我无法检查它,因为它会破坏合并过程.

谢谢你的时间!

git xcode

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

T-SQL:如何从存储过程返回0行,以及如何使用XACT_ABORT和TRY/CATCH

我正在写一个存储过程,我想在出现故障时返回0条记录.我似乎无法弄清楚如何只返回0行?我已经使用SELECT NULL但是这会返回1行,并且NULL在第1行第1行中.我也尝试不在SELECT我的错误代码路径中指定任何语句但是在测试@@ROWCOUNTSP之后的值时,它返回1.我认为这可能是因为@@ROWCOUNT从未SELECT在SP中早先的声明(在EXISTS())中重置.任何意见,将不胜感激.

此外,我已XACT_ABORT设置为ON,但我还使用了一个TRY/CATCH块来确保从存储过程返回正确的错误"返回值".这个可以吗?如果有错误,是否XACT_ABORT覆盖TRY/CATCH或我的错误代码路径是否仍会导致返回正确的返回值?

-- Setup
SET NOCOUNT ON; -- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.
SET XACT_ABORT ON; -- SET XACT_ABORT ON rollback transactions on errors
DECLARE @return int; SET @return = 1; -- Default to general error

-- Start transaction
BEGIN TRANSACTION
    BEGIN TRY

        IF NOT EXISTS(SELECT NULL FROM …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server stored-procedures sql-server-2005

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

setPropertiesToFetch似乎没有任何效果

我正在尝试在我的获取请求中使用setPropertiesToFetch来限制从我的商店中检索的数据,但它似乎没有任何效果.当我使用它并显示返回控制台的对象时,我可以看到我的所有属性都存在.无论我是否设置属性,都会显示相同的数据.所有关系都显示为错误,但属性的所有数据都存在.

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Entity" inManagedObjectContext:context];
NSDictionary *entityProperties = [entity propertiesByName];
[fetchRequest setEntity:entity];
[fetchRequest setFetchBatchSize:20];
[fetchRequest setIncludesPendingChanges:NO];
[fetchRequest setReturnsObjectsAsFaults:NO];
[fetchRequest setPropertiesToFetch:[NSArray arrayWithObjects:[entityProperties objectForKey:@"myAttrib"], nil]];
Run Code Online (Sandbox Code Playgroud)

fetch似乎返回每个对象的相同数据,有或没有最后一行.有任何想法吗?

iphone core-data

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

CSS优化,嵌套选择器和ID /类名称的浏览器索引

在渲染网页和应用样式时,浏览器会对ID和类名进行索引以进行有效搜索,或者每次指定ID或类名以到达正确的元素时,它都会从顶部遍历整个DOM.

我想知道出于优化的原因,以及是否值得将浏览器提示(更长的选择器)提供给某个ID的对象所在的位置.即

#container #one-of-many-container-siblings #my-id 
Run Code Online (Sandbox Code Playgroud)

代替:

#my-id
Run Code Online (Sandbox Code Playgroud)

如果DOM非常大,前者会产生更好的性能吗?

css browser optimization

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

使用iCloud的核心数据永远不会从"使用本地存储:1"切换

我已经使用Core Data设置了iCloud,但似乎从未切换到使用本地存储中无处不在的存储.看看Xcode中的iCloud面板,我可以看到iCloud状态是空闲的,我甚至可以看到在我无处不在的容器(NSPersistentStoreUbiquitousContentNameKey)里面创建了目录,但是图上没有任何活动(上传或下载).

我只在控制台中获得以下内容:

-[PFUbiquitySwitchboardEntryMetadata setUseLocalStorage:](760): CoreData: Ubiquity:  me~3C82877D-69EE-5968-A69C-37FD71227462:MyApp
Using local storage: 1
Run Code Online (Sandbox Code Playgroud)

我期待它最终不会使用本地存储,但这种情况从未发生过.

将ubiquity日志级别设置为3,我可以在我的控制台中看到以下日志:

__60-[PFUbiquitySetupAssistant canReadFromUbiquityRootLocation:]_block_invoke(1289): CoreData: Ubiquity:  Coordinated read finished for ubiquity root url: file:///Users/me/Library/Mobile%20Documents/VK94X636H2~com~company~MyApp/
-[NSPersistentStoreCoordinator addPersistentStoreWithType:configuration:URL:options:error:](1081): CoreData: Ubiquity:  Post store setup succeded. <NSSQLCore: 0x10040bc90> (URL: file:///Users/me/Library/Containers/com.company.MyApp/Data/Library/Application%20Support/CoreDataUbiquitySupport/me~3C82877D-69EE-5968-A69C-37FD71227462/MyApp/33D95E86-2331-4ED6-9ECF-FC88E130A38F/store/MyApp.storedata)
-[PFUbiquitySetupAssistant canReadFromUbiquityRootLocation:](1298): CoreData: Ubiquity:  Read finished: 1
-[PFUbiquitySetupAssistant canReadFromUbiquityRootLocation:](1301): CoreData: Ubiquity:  Read finished: 1 / 1 / file:///Users/me/Library/Mobile%20Documents/VK94X636H2~com~company~MyApp/CoreData/MyApp/
-[PFUbiquitySetupAssistant canReadFromUbiquityRootLocation:](1305): CoreData: Ubiquity:  Blocking for initial sync: <PFUbiquitySetupAssistant: 0x10021edc0>
Run Code Online (Sandbox Code Playgroud)

所以它似乎停留在了Blocking for initial sync,但我不知道为什么.

有谁知道什么可能是错的?

macos core-data ios icloud

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

NSDictionaryResultType表达式未考虑新插入的对象

我想要核心数据中字段的最大值,所以我设置了以下请求:

// Create fetch
NSFetchRequest *fetch = [[NSFetchRequest alloc] init];
[fetch setEntity:[NSEntityDescription entityForName:@"MyEntity" inManagedObjectContext:context]];
[fetch setResultType:NSDictionaryResultType];

// Expression for Max ID
NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"myNumbericID"];
NSExpression *minExpression = [NSExpression expressionForFunction:@"max:" arguments:[NSArray arrayWithObject:keyPathExpression]];
NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc] init];
[expressionDescription setName:@"maxID"];
[expressionDescription setExpression:minExpression]; 
[expressionDescription setExpressionResultType:NSDoubleAttributeType];
[fetch setPropertiesToFetch:[NSArray arrayWithObject:expressionDescription]];

// Execute the fetch. 
double theID = 0;
NSError *error;
NSArray *objects = [context executeFetchRequest:fetch error:&error]; 
if (objects && [objects count] > 0) { 
    theID = [((NSNumber *)[[objects objectAtIndex:0] valueForKey:@"maxID"]) doubleValue];
} …
Run Code Online (Sandbox Code Playgroud)

core-data nsfetchrequest

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

排队并发和非并发NSOperations的问题

我有一个NSOperationQueue,它包含2个NSOperations,并设置为通过设置setMaxConcurrentOperationCount为1 来一个接一个地执行它们.

其中一个操作是标准的非并发操作(只是一种main方法),它同步从Web(当然是在单独的操作线程上)检索一些数据.另一个操作是并发操作,因为我需要使用一些必须异步运行的代码.

问题是我发现并发操作只有在首先添加到队列中才有效.如果它出现在任何非并发操作之后,那么奇怪的是该start方法被称为正常,但在该方法结束并且我已经设置我的连接以回调方法之后,它永远不会.之后,队列中不再执行任何操作.就好像它在start方法返回后挂起,并且没有来自任何url连接的回调被调用!

如果我的并发操作首先放入队列中,那么一切正常,异步回调工作,后续操作在完成后执行.我根本不明白!

您可以在下面看到我的并发NSOperation的测试代码,我很确定它是可靠的.

任何帮助将不胜感激!

主线观察:

我刚刚发现,如果并发操作首先在队列中,那么该[start]方法将在主线程上调用.但是,如果它不是队列中的第一个(如果它在并发或非并发之后),[start]则不在主线程上调用该方法.这似乎很重要,因为它符合我的问题模式.这可能是什么原因?

并行的NSOperation代码:

@interface ConcurrentOperation : NSOperation {
    BOOL executing;
    BOOL finished;
}
- (void)beginOperation;
- (void)completeOperation;
@end

@implementation ConcurrentOperation
- (void)beginOperation {
    @try {

        // Test async request
        NSURLRequest *r = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://www.google.com"]];
        NSURLConnection *c = [[NSURLConnection alloc] initWithRequest:r delegate:self];
        [r release];

    } @catch(NSException * e) {
        // Do not rethrow exceptions.
    }
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    NSLog(@"Finished loading... …
Run Code Online (Sandbox Code Playgroud)

iphone multithreading cocoa-touch objective-c nsoperation

5
推荐指数
2
解决办法
5439
查看次数

在iOS多任务处理中进入后台时线程的行为

在运行一些测试时,我注意到当一个应用程序(没有后台权限,即voip,gps等)进入后台状态时,当时运行的任何后台线程(或并发NSOperations)似乎都被暂停(未终止) ,当应用程序进入前台时它们会继续.

我无法在任何地方看到此线程行为.有谁知道这种行为是否已定义且可以依靠?

如果线程可以在重新打开应用程序时安全地继续,那么不必取消任务或参与任务完成将是有用的.特别适合复杂的操作.

任何信息都会很棒.谢谢!

multitasking ios

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

将UUID存储在核心数据中

在Core Data中存储UUID(用于全局多系统对象识别)的最佳方法是什么?考虑存储大小和索引功能.

理想情况下,它将存储为二进制数据(128位),但这样做有什么直接问题吗?以大小方式存储它会更有效,而不是作为NSString,但我只是想检查将其存储为二进制数据没有性能问题.它仍然可以正确索引为二进制数据吗?在可变宽度字段中存储有效的固定宽度二进制数据是否有任何缺点?

我对SQLite及其存储/索引机制并不太熟悉,所以想要寻求一些建议!

uuid core-data ios

5
推荐指数
2
解决办法
6425
查看次数