我想交换玩家指向的位置.我肯定做错了,但无法弄明白为什么.当我打电话时,我也尝试在签名和播放器中使用(播放器**)播放器.有任何想法吗?
- (void)handleResult:(Result)result forPlayer:(Player *)player inLineup:(Lineup *)lineup
{
switch (result)
{
case ResultSub:
{
Player *sub = [lineup.substitutes objectAtIndex:0];
player = sub;
return;
break;
}
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个名为Team的NSManagedObject(NSMO)的子类.团队与另一个名为Contract的NSMO子类有一对多的关系.合同与玩家一对一(另一个NSMO).我想简化使用Team的代码,并且只能引用它的"玩家".玩家将成为与特定团队签订合同的一系列玩家.
我尝试在XCode的数据建模工具中创建一个名为players的fetched属性,但收效甚微.我尝试了很多不同的方法,但最有意义的方法是将其命名为"玩家",将目标命名为Player,最后将其作为我的谓词"contract.team.name == SELF".
在我的Team类中,我有一个名为players的NSArray属性(在实现中有@dynamic播放器).当我NSLog(@"%@",self.players)它退出...
Relationship fault for (<NSFetchedPropertyDescription: 0x6d19cd0>), name players, isOptional 1, isTransient 1, entity Team, renamingIdentifier players, validation predicates (
), warnings (
), versionHashModifier (null), fetchRequest <NSFetchRequest: 0x6d1a080> (entity: Player; predicate: (contract.team.name == SELF); sortDescriptors: ((null)); type: NSManagedObjectResultType; ) on 0x6d38550
Run Code Online (Sandbox Code Playgroud)
......对我来说毫无意义.我觉得我做了很多错事我甚至不知道从哪里开始处理它.
所以我想我的问题是1)这个获取属性应该在我的NSMO子类中假设什么类型.(我把它作为NSArray,但显然它是一个NSFetchedPropertyDescription)2)我可以使用什么代码来获取数组或出来?
谢谢!抢
我有一个视图控制器,它查询Web服务是否应显示插页式广告.如果是这样,则使用presentViewController实例化并呈现另一个视图控制器:animated:completion:.根据这个答案和文档,我假设viewDidAppear:当解雇所呈现的视图控制器(它自己做)时不会被调用.从概念上讲,无论如何,呈现视图控制器的视图永远不会从视图层次结构中删除,因此永远不需要"重新出现".我显然错了.那么发生了什么?为什么我所看到的与文档所说的不同?
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[[AdService sharedAdService] adForSlotName:@"Main Interstitial" completionBlock:^(Ad *adForSlotName) {
if(adForSlotName)
{
InterstitialAdViewController_iPhone *interstitialAdViewController = [[InterstitialAdViewController_iPhone alloc] init];
interstitialAdViewController.ad = adForSlotName;
dispatch_queue_t mainQueue = dispatch_get_main_queue();
dispatch_async(mainQueue, ^{
[self presentViewController:interstitialAdViewController animated:YES completion:^{}];
});
[interstitialAdViewController release];
}
}];
}
- (void)viewWillDisappear:(BOOL)animated
{
[[AdService sharedAdService] clearAdForSlotName:@"Main Interstitial"];
[super viewWillDisappear:animated];
}
Run Code Online (Sandbox Code Playgroud) objective-c uiviewcontroller grand-central-dispatch ios uiview-hierarchy
我首先要说出我想做什么,因为我不确定我是否在问正确的问题.我正在制作一个基于网格的地图,我将保留一组对象来保持地图的状态和表示.每个对象都是一个Tile类.我应该是UIView或子类NSObject的子类,并且有一个UIView的ivar.我还计划在UIView中有一个UIImageView来加载代表地图位的图像.最后,我想从NIB加载视图.
我个人知道如何做这些事情但不确定最佳做法.有什么想法吗?
我有一个对象,我像正常一样分配/初始化以获取实例.稍后在我的应用程序中,我想从磁盘为该对象加载状态.我想我可以解压缩我的类(符合NSCoding)并只交换我的实例所指向的位置.为此,我使用此代码...
NSString* pathForDataFile = [self pathForDataFile];
if([[NSFileManager defaultManager] fileExistsAtPath:pathForDataFile] == YES)
{
NSLog(@"Save file exists");
NSData *data = [[NSMutableData alloc] initWithContentsOfFile:pathForDataFile];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
[data release];
Person *tempPerson = [unarchiver decodeObjectForKey:@"Person"];
[unarchiver finishDecoding];
[unarchiver release];
if (tempPerson)
{
[self release];
self = [tempPerson retain];
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当我在整个应用程序中撒了一些NSLog时,我注意到了
self.person: <Person: 0x3d01a10> (After I create the object with alloc/init)
self: <Person: 0x3d01a10> (At the start of this method)
tempPerson: <Person: 0x3b1b880> (When I create the tempPerson)
self: <Person: 0x3b1b880> …Run Code Online (Sandbox Code Playgroud) 我有一堆NSOperations和他们自己的NSManagedObjectContexts对我的Core Data存储进行了更改并保存并成功地将他们的更改变为主线程的NSManagedObjectContext.我知道这个.现在我希望在主要上下文更新时通知前UIViewController.所以我...
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(refreshData:)
name:NSManagedObjectContextDidSaveNotification
object:[NSManagedObject mainThreadManagedObjectContext]];
}
Run Code Online (Sandbox Code Playgroud)
但是,我不认为在合并后台线程的更改后,主线程的NSManagedObjectContext会发布自己的任何通知.我试图在文档中的哪个地方找到Apple说我应该在告诉主要线程合并更改或其他一些之后发布我自己,但没有运气.为了在我的NSOperation中额外参考,我有......
+ (void)mergeChanges:(NSNotification *)notification
{
NSManagedObjectContext *managedObjectContext = [self mainThreadManagedObjectContext];
[managedObjectContext performSelectorOnMainThread:@selector(mergeChangesFromContextDidSaveNotification:)
withObject:notification
waitUntilDone:YES];
}
+ (NSManagedObjectContext *)adHocManagedObjectContext
{
NSManagedObjectContext *adHocManagedObjectContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate] adHocManagedObjectContext];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(mergeChanges:)
name:NSManagedObjectContextDidSaveNotification
object:adHocManagedObjectContext];
return adHocManagedObjectContext;
}
Run Code Online (Sandbox Code Playgroud)
我是否希望听到主线程的NSManagedObjectContext有关它的保存,或者我应该在mergeChangesFromContextDidSaveNotification后发布我自己的通知:?