我正在使用BitBucket和Xcode以及Git进行版本控制,最近我更改了所有密码(感谢Adobe!).
不出所料,我不再能够在BitBucket(Authentication failed for 'https://______.git')上将我的本地提交推送到我的存储库,但我忘记了如何更新我的iMac上的缓存密码.不知怎的,我一直无法在Google或Stack Overflow上找到它,虽然在我看来它应该相当简单......
我最近注意到,我当前项目中的一些提交正在"管理器 - 存储库"窗口中的其他项目下显示.此外,"管理器 - 存储库"窗口还显示左侧面板列表中我没有处理的其他项目,包括当前项目的重复项.因此,我使用左下角的( - )键从左侧面板中删除了不必要的项目列表.
现在看来,Xcode中的Version编辑器(在Assistant编辑器按钮旁边)不起作用.当我尝试加载"Time Machine"视图(带有CCW箭头的时钟指针)时,状态栏显示"正在加载修订版"并且从不加载我以前的提交.我以前的提交出现在当前项目下的"Organizer - Repositories"窗口中.
此外,尝试进行新的提交会导致Xcode对话框显示"请等待工作区正在扫描工作副本时",而在其下面则粘贴在短语"正在扫描工作副本..."上它.
刚开始使用源代码控制时,我也遇到过Xcode的其他几个问题.我正在运行外部监视器并使用Lion(如果这是相关的).我的另一个新问题是,如果我离开计算机并返回,iOS模拟器通常会冻结(因此我必须重新登录).这迫使我强制退出Xcode并重新启动它.
更新1:以下链接显示它将解决问题,除了"位置"字段不可编辑(即,它是灰色的)并设置为"不适用".(参见Xcode 4卡在"扫描工作副本"上)
更新2:最近一次重启Xcode后,我现在可以再次提交.我还意识到"Time Machine"视图对于每个文件都不同; 即,它只会显示该特定文件的修订历史记录.我仍然不明白为什么我对当前项目提交的一些提交也会出现在其他项目下,或者为什么Xcode认为这些项目是开放的(通过点击控件中的Xcode图标来证明) .
有没有为什么试图存储和在检索值什么特别的原因NSMutableDictionary使用NSIndexPath的key可能会失败?
我本来试图这样做是为了保存一个NSMutableDictionary的UITableViewCell高度(self.cellHeights)的UITableView.每次点击a时UITableViewCell,该单元格将根据存储在该NSMutableDictionary特定内容中的值在两个不同高度之间展开或收缩indexPath:
- (CGFloat)tableView:(UITableView *)tableView
heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSNumber *heightNSNumber = [self.cellHeights objectForKey:indexPath];
if (!heightNSNumber)
{
heightNSNumber = [NSNumber numberWithFloat:100.0];
[self.cellHeights setObject:heightNSNumber forKey:indexPath];
}
return [heightNSNumber floatValue];
}
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
NSNumber *heightNSNumber = [self.cellHeights objectForKey:indexPath];
if (!heightNSNumber)
{
heightNSNumber = [NSNumber numberWithFloat:100.0];
[self.cellHeights setObject:heightNSNumber forKey:indexPath];
}
if ([heightNSNumber floatValue] == 100.0)
{
[self.cellHeights …Run Code Online (Sandbox Code Playgroud) cocoa-touch objective-c uitableview nsmutabledictionary nsindexpath
我在Xcode中使用用户级断点(即,跨项目共享的断点 - 右键单击断点>"将断点移动到">"用户").
我看到特定于项目的断点保存在$ project.xcodeproj/xcuserdata/$ username.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist中,但用户级断点不会出现在此文件中.
任何人都知道用户级断点的保存位置?
有没有办法以编程方式触发相当于在具有编辑操作的UITableViewCell上向左滑动?这与简单的[tableView setEditing:YES animated:YES]方法不同,因为该方法将整个表设置为编辑模式并显示插入/删除左附件视图和/或重新排序控件而不是单行的编辑操作.
因此,与iOS 7相比,导航控制器iOS 7中的视图框架的定义相当不同(在我看来,奇怪)...
示例:想象一个UIViewController,它包含一个UIScrollView(self.scrollView),它可以填充整个self.viewstruts和spring,以便它总是填充self.view.现在将UIViewController嵌入到UINavigationController中,导航栏保持可见.
在iOS 6中,我观察到以下内容:
self.view.frame.origin= (0.0, X)where X=状态栏的高度(包含时间,信号条等= 20.0)self.view.frame.size.height= self.view.bounds.size.height=总高度减去self.navigationController.navigationBar.frame.size.heightself.scrollView.frame.origin= self.scrollView.bounds.origin=(0.0, 0.0)在iOS 7中,我观察到以下内容:
self.view.frame.origin = (0.0, 0.0)self.view.frame.size.height= self.view.bounds.size.height=整体高度(即嵌入导航控制器时高度没有降低)self.scrollView.bounds.origin= (0.0, -1 * self.navigationController.navigationBar.frame.size.height),但self.scrollView.frame.origin=(0.0, 0.0)我的猜测是这样做,以便内容可以继续在导航栏下方,以便导航栏可以显示最轻微的模糊+透明度与iOS 7.
问题:self.scrollView考虑到上面的观察结果,如何将iOS 7中的实际尺寸(宽度x高度)嵌入到导航控制器中,因为self.scrollView.bounds.origin== self.scrollView.contentOffset?我是否只需为iOS 6 v.iOS 7编写不同的代码并检测正在运行的版本?
我真的不想假设屏幕是任何特定尺寸并且硬编码,因为这似乎是不好的形式......
更新1:我已经上传了我想要问的草图.请注意,在这种情况下416.0,正确的答案是,在iOS 6中很容易获得,但我不知道如何在不借助假设的情况下在iOS 7中获取它.

我正在使用UIImagePickerController来允许用户上传照片以便在我的应用程序中使用.在选择要上传的照片之后,然后提示用户裁剪他/她的照片(因为我已经设置imagePickerController.allowsEditing = YES).然而,如果照片是横向的(即,比它更高则更宽),则用户当前可以以不输出方形图像的方式裁剪照片.这是因为裁剪风景照片时的默认缩放级别是aspectFit而不是aspectFill(因为它适用于肖像照片).
是否可以为UIImagePickerController的编辑模式设置最小缩放级别?我想如果输出不是正方形,我可以简单地自动裁剪图像,但我宁愿UIImagePickerController的编辑模式将此传达给用户而不是为他/她做.
我很难在网上找到任何文档,清楚地解释了如何正确实现Core Image的CIPerspectiveTransform过滤器.尤其是,对于设置CIVector值时inputTopLeft,inputTopRight,inputBottomRight,和inputBottomLeft,什么是这些向量做的形象呢?(即,这些矢量如何扭曲我的图像背后的数学是什么?)
目前这是我正在使用的代码.它不会崩溃,但它不会显示图像:
CIImage *myCIImage = [[CIImage alloc] initWithImage:self.image];
CIContext *context = [CIContext contextWithOptions:nil];
CIFilter *filter = [CIFilter filterWithName:@"CIPerspectiveTransform" keysAndValues:@"inputImage", myCIImage, @"inputTopLeft", [CIVector vectorWithX:118 Y:484], @"inputTopRight", [CIVector vectorWithX:646 Y:507], @"inputBottomRight", [CIVector vectorWithX:548 Y:140], @"inputBottomLeft", [CIVector vectorWithX:155 Y:153], nil];
CIImage *outputImage = [filter outputImage];
CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]];
UIImage *transformedImage = [UIImage imageWithCGImage:cgimg];
[self setImage:transformedImage];
CGImageRelease(cgimg);
Run Code Online (Sandbox Code Playgroud)
其他需要注意的事项可能很重要:
我的UIImageView(75pts x 115 pts)已经通过awakeFromNib初始化,并且已经有一个与之关联的图像(151px x 235px).
上面的代码正在UIImageView的- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event函数中实现.我希望能够根据屏幕坐标调整图像的视角,使其看起来像是在3D空间中移动. …
如果我有一个类id的对象myObject,我将如何将其"转换"为CGPoint(假设我已经执行了内省并且知道myObject到CGPoint)?尽管CGPoint不是真正的Obj-C类.
只需执行(CGPoint)myObject返回以下错误:
Used type 'CGPoint' (aka 'struct CGPoint') where arithmetic or pointer type is required
我想这样做,以便我可以检查传递给NSMutableArray的对象是否是CGPoint,如果是,则自动将CGPoint包装在NSValue中; 例如:
- (void)addObjectToNewMutableArray:(id)object
{
NSMutableArray *myArray = [[NSMutableArray alloc] init];
id objectToAdd = object;
if ([object isKindOfClass:[CGPoint class]]) // pseudo-code, doesn't work
{
objectToAdd = [NSValue valueWithCGPoint:object];
}
[myArray addObject:objectToAdd];
return myArray;
}
Run Code Online (Sandbox Code Playgroud)
附加代码
以下是我用来执行"内省"的功能:
+ (BOOL)validateObject:(id)object
{
if (object)
{
if ([object isKindOfClass:[NSValue class]])
{
NSValue *value = (NSValue *)object;
if (CGPointEqualToPoint([value CGPointValue], [value CGPointValue]))
{
return YES;
}
else
{ …Run Code Online (Sandbox Code Playgroud) 我在尝试让我的Objective-C代码在触发后续代码之前等待来自UIAlertView的用户输入时遇到了很多麻烦.例如,我有以下代码:
if (!self.currentUser) [self displayLoginUIAlertView];
Program *program = [[Program alloc] initWithUser:self.currentUser];
[program startProgram];
Run Code Online (Sandbox Code Playgroud)
Program自定义对象在哪里以及用户输入的位置[self displayLoginUIAlertView]设置属性self.currentUser.
我宁愿不把第二行和第三行(Program *program和[program startProgram]成alertView:didDismissWithButtonIndex,因为我想限制我的视图控制器不同类型的警报意见的数量.另外,我不希望创建自己的自定义全模态UIAlertView中的对象(正如网上的一些解决方案似乎暗示的那样).
我希望得到的答案可以超越UIAlertView对象,并且有助于回答更常见的问题,即如何在进入下一行代码之前等待Objective-C中的一行完全执行.我也尝试过以下方法:
if (!self.currentUser) [self displayLoginUIAlertView];
while (!self.currentUser) wait(1);
Program *program = [[Program alloc] initWithUser:self.currentUser];
[program startProgram];
Run Code Online (Sandbox Code Playgroud)
然而,这(不出所料)导致无限循环,其中警报视图从不出现并且用户输入被锁定.
我已经研究过使用块但是他们的语法非常困惑.块是解决方案吗?或者我问错了问题?
modal-dialog objective-c wait uialertview objective-c-blocks
objective-c ×6
cocoa-touch ×3
ios ×2
uitableview ×2
xcode ×2
casting ×1
cgpoint ×1
class ×1
core-image ×1
crop ×1
git ×1
ios6 ×1
ios7 ×1
macos ×1
modal-dialog ×1
nsindexpath ×1
uialertview ×1
uiscrollview ×1
wait ×1
zoom ×1