= 0x0b28ad30 <User: 0xb28ad30> (entity: User; ID: 0xb261160 <x-coredata:///User/tC48E8991-B8A6-4E68-9112-93F9F21DB5382> ; data: <fault>)
我的理解是,当我尝试访问此对象的某个属性时,Core Data框架将触发错误.我很困惑为什么我在这种情况下访问用户的“ID”属性没有触发错误?
编辑:
这是创建和使用loggedInUser对象的方法:
//method to get bgContext +(NSManagedobjectContext *)getContextOnBgWithParentSetToMainMOC{ NSManagedobjectContext *tmpContext = [[NSManagedobjectContext alloc] initWithConcurrencyType:nsprivateQueueConcurrencyType]; [tmpContext setParentContext:[Utils getAppDelegate].managedobjectContext]; return tmpContext;}//in App DelegateNSManagedobjectContext *bgContext = [NSManagedobjectContext getContextOnBgWithParentSetToMainMOC]; self.loggedInUser = [User importFromObject:loggedInUserData inContext:bgContext completionBlock:^(NSManagedobjectContext *theContext,NSManagedobject *theManagedobjectWithValuesimported) {}];//In User.m file+ (User *)importFromObject:(NSDictionary *)dictionary inContext:(NSManagedobjectContext *)context completionBlock:(TemporaryContextimportReturnBlock)block { if ( !context ){ context = [NSManagedobjectContext getContextOnBgWithParentSetToMainMOC]; } NSManagedobjectContext *localContext = context; User *newUserEntity = [NSEntityDescription insertNewObjectForEntityForname:@"User" inManagedobjectContext:localContext]; NSArray *emailsArray = [dictionary objectForKey:@"emails"]; Nsstring *emailsstring = @""; if ([emailsArray count] > 0){ emailsstring = [emailsArray componentsJoinedByString:@","]; } newUserEntity.emails = emailsstring; newUserEntity.ID = [dictionary objectForKey:@"ID"]; newUserEntity.n = [dictionary nonNullObjectForKey:@"n"]; return newUserEntity;}//Access in one of the vIEw controllers User *loggedInUser = [Utils getAppDelegate].loggedInUser;// loggedInUser.ID /*nil*/解决方法 我也有同样的问题.事实证明,根据引用 Apple docs的 this answer,NSManagedobject没有像你期望的那样拥有对其NSManagedobjectContext的强引用.我怀疑如果你检查你的对象没有正确解决错误[myObject managedobjectContext] == nil.
我不知道这里有什么最佳实践.显而易见(但可能很困难)的解决方案是找出您的MOC被解除分配的原因.作为替代方案,虽然我不确定它是否安全,但您可以保留每个NSManagedobject实例的MOC. (我对开放here有疑问.)
总结以上是内存溢出为你收集整理的ios – Core Data未将NSManagedObject实例的错误作为app delegate上的属性触发全部内容,希望文章能够帮你解决ios – Core Data未将NSManagedObject实例的错误作为app delegate上的属性触发所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)