小编NSG*_*God的帖子

在中止git中的当前更改后切换分支

我克隆了一个git repo然后开始在它的主分支中玩.过了一会儿,我想忽略我刚刚做出的改变(不提交它们),然后切换到另一个分支.但是,它阻止我切换,因为有未提交的更改.如何在不隐藏它们的情况下忽略它们?这是发生的事情:

$ git checkout gh-pages
error: Your local changes to the following files would be overwritten by checkout:
        somefile.txt
Please, commit your changes or stash them before you can switch branches.
Aborting
Run Code Online (Sandbox Code Playgroud)

git git-stash git-branch

40
推荐指数
3
解决办法
5万
查看次数

如何始终使UIScrollView可滚动?

我有一个UIScrollView.该scrollview.contentSize设置在所有子视图的高度UIScrollView.当contentSizeif的高度大于高度UIScrollView时,拖动视图时完全滚动.当我拖动视图时,当contentSize高度小于高度时UIScrollView没有发生任何事情.

我认为这是标准行为,因为没有什么可以滚动.但我想,UIScrollView无论如何,这有点移动.

一个可能的解决方案是确保contentSize的高度永远不会小于frame.height加上小的边距(即5px):

CGSize scrollSize = self.frame.size;
int defaultHeight = self.frame.size.height + 5;
int contentHeight = self.webView.frame.origin.y + self.webView.frame.size.height;
scrollSize.height = MAX(defaultHeight, contentHeight);
[self.scrollView setContentSize:scrollSize];
Run Code Online (Sandbox Code Playgroud)

是否有一种不那么强硬的方式来做到这一点?

cocoa-touch objective-c uiscrollview ios

28
推荐指数
2
解决办法
7615
查看次数

NSString是什么样的:实际上呢?

我试图找出isLike:实际上对NSStrings有什么作用并遇到麻烦.Apple 自己的文档很模糊:

返回一个布尔值,指示接收者是否"喜欢"另一个给定对象.

...

NSObject方法返回的此方法的默认实现NO.NSString还提供了此方法的实现,YES如果接收器匹配object描述的模式,则返回该方法.

它提到了一个"模式",但通过一些初步的测试,它似乎没有使用正则表达式.在这种情况下,模式格式究竟是什么?

cocoa objective-c nsstring

24
推荐指数
2
解决办法
554
查看次数

Xcode 5.1方法搜索只允许一个字符?

我最近升级到Xcode 5.1,我遇到了最烦人的bug.允许您搜索正在查看的给定源文件上的方法的即时搜索或方法搜索对话框不允许我输入多个字符.我有大量的源文件,我倾向于依赖它.不知道为什么会这样.我已经尝试重新安装Xcode(只需将其拖入垃圾箱).

在此输入图像描述

您可以通过单击屏幕截图中显示的方法找到我正在讨论的搜索字段,只需输入内容即可.

当我输入时,字符被替换为输入的最后一个字母.

macos xcode ios xcode5.1

20
推荐指数
2
解决办法
891
查看次数

glob匹配中的**和*之间的差异(.gitignore)

我有以下目录结构和文件.

pw-spec/
|-- event_spec.coffee
|-- event_spec.js
|-- integration
|   `-- service
|       |-- auth_spec.coffee
|       |-- auth_spec.js
|       |-- chat_spec.coffee
|       |-- chat_spec.js
|       |-- transport_spec.coffee
|       `-- transport_spec.js
|-- message_spec.coffee
|-- message_spec.js
|-- pw_spec.coffee
|-- pw_spec.js
|-- run.coffee
|-- run.html
|-- run.js
|-- service
|   |-- auth_spec.coffee
|   |-- auth_spec.js
|   |-- chat_spec.coffee
|   |-- chat_spec.js
|   |-- stream_spec.coffee
|   `-- stream_spec.js
|-- spec.coffee
|-- spec.js
`-- stub
    |-- stream.coffee
    |-- stream.js
    |-- transport.coffee
    `-- transport.js

4 directories, 27 …
Run Code Online (Sandbox Code Playgroud)

git shell glob gitignore

19
推荐指数
2
解决办法
2万
查看次数

自定义扩展文件未在iMessage中打开

在我的应用程序中,我需要将一些自定义数据文件从一个设备发送到另一个设备,我正在尝试使用Mail,iMessage/Message和Airdrop.

这适用于Mail和Airdrop但使用iMessage并且它很好,但在接收端,我无法打开文件.它只是不允许我对它做任何事情.

有任何想法吗??

这就是我的文档类型:

<key>CFBundleDocumentTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeIconFile</key>
            <string>abc.png</string>
            <key>CFBundleTypeName</key>
            <string>ABC Custom Data type</string>
            <key>CFBundleTypeRole</key>
            <string>Viewer</string>
            <key>Handler Rank</key>
            <string>Owner</string>
            <key>LSItemContentTypes</key>
            <array>
                <string>com.company.abc.wd</string>
            </array>
        </dict>
    </array>
Run Code Online (Sandbox Code Playgroud)

这就是我发送数据的方式:

NSMutableDictionary * dict = [NSMutableDictionary dictionary];
[dict setObject:currentDataSet forKey:@"actualData"];
NSData * meetingData = [NSKeyedArchiver archivedDataWithRootObject:dict];

Meeting * dataItem = [[Meeting alloc]initWithData:meetingData
               type:@"com.abc.xyz.wd" subject:@"Meeting"
          previewImage:[UIImage imageNamed:@"appIcon.png"]];

UIActivityViewController * activityController =
  [[UIActivityViewController alloc]initWithActivityItems:@[dataItem]
                                   applicationActivities:nil];

activityController.excludedActivityTypes =
       @[UIActivityTypePostToTwitter, UIActivityTypePostToWeibo];

[self presentViewController:activityController animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

objective-c ios imessage ios7

18
推荐指数
2
解决办法
2079
查看次数

从一个NSManagedObjectContext保存的更改不会反映在主NSManagedObjectContext上

我有一个主要的NSManagedObjectContext,它是在appDelegate中创建的.

知道,我正在使用另一个NSManagedObjectContext来编辑/添加新对象而不影响主NSManagedObjectContext,直到我保存它们.

当我保存第二个NSManagedObjectContext时,更改不会反映在主NSManagedObjectContext中,但如果我从模拟器打开.sqlite数据库,则更改已正确保存到.sqlite数据库中.无论我是否再次获取数据,即使我创建了第三个NSManagedObjectContext,我也看不到第二个NSManagedObjectContext的更改,但此时这些更改都在磁盘上...

如果我退出并打开应用程序,则所有更改都在那里.

是什么导致主NSManagedObjectContext不能看到商店的新变化?

在此方法之前,我使用相同的NSManagedObjectContext和undoManager,但我想将其更改为使用两个不同的NSManagedObjectContext.

谢谢,

    NSError* error = nil;

    if ([managedObjectContext hasChanges]) {
        NSLog(@"This new object has changes");
    }

    if (![managedObjectContext save:&error]) {
        NSLog(@"Failed to save to data store: %@", [error localizedDescription]);
        NSArray* detailedErrors = [[error userInfo] objectForKey:NSDetailedErrorsKey];
        if(detailedErrors != nil && [detailedErrors count] > 0) {
            for(NSError* detailedError in detailedErrors) {
                NSLog(@"  DetailedError: %@", [detailedError userInfo]);
            }
        }
        else {
            NSLog(@"  %@", [error userInfo]);
        }
    }
Run Code Online (Sandbox Code Playgroud)

cocoa core-data objective-c nsmanagedobjectcontext

14
推荐指数
1
解决办法
1万
查看次数

尝试创建新的NSDictionary时EXC_BAD_ACCESS

NSDictionaries在循环中创建并将其添加到一个循环中我遇到了麻烦NSMutableArray.

基本上我只想更改键的名称,但由于我找不到一个函数,我去了下面的代码:

- (NSMutableArray *)getCategoriesForChannel:(int)channelId {
    NSDictionary *data = [self call:@"get_categories.ashx"];
    NSArray *categories = [data objectForKey:@"categories"];
    NSMutableArray *returnArray = [NSMutableArray
                          arrayWithCapacity:[categories count]];

    for(NSDictionary *category in categories) {
        [returnArray addObject:[NSDictionary dictionaryWithObjectsAndKeys:
                         [category objectForKey:@"Channel_id"], @"id",
                         [category objectForKey:@"Channel_name"], "@name", nil]];
    }
    return returnArray;
}
Run Code Online (Sandbox Code Playgroud)

但是app总是在它到达addObject:方法时退出并抛出一个EXC_BAD_ACCESS.我认为它与内存管理有关,但由于我没有真正的C-background,我不知道如何解决这个问题.有人可以指出我正确的方向吗?提前致谢!

memory-management exc-bad-access objective-c

12
推荐指数
1
解决办法
4040
查看次数

NSTextField自动完成

有没有人知道任何可以实现NSTextField自动完成的类或库?

我试图让标准的自动完成工作,但它是作为一个同步api.我通过互联网上的api电话获得自动完成的话.

到目前为止我做了什么:

- (void)controlTextDidChange:(NSNotification *)obj
{
    if([obj object] == self.searchField)
    {
        [self.spinner startAnimation:nil];
        [self.wordcompletionStore completeString:self.searchField.stringValue];

        if(self.doingAutocomplete)
            return;
        else
        {
            self.doingAutocomplete = YES;
            [[[obj userInfo] objectForKey:@"NSFieldEditor"] complete:nil];
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我的商店完成后,我有一个被调用的委托:

- (void) completionStore:(WordcompletionStore *)store didFinishWithWords:(NSArray *)arrayOfWords
{
    [self.spinner stopAnimation:nil];
    self.completions = arrayOfWords;
    self.doingAutocomplete = NO;
}
Run Code Online (Sandbox Code Playgroud)

将完成列表返回到nstextfield的代码是:

- (NSArray *)control:(NSControl *)control textView:(NSTextView *)textView completions:(NSArray *)words forPartialWordRange:(NSRange)charRange indexOfSelectedItem:(NSInteger *)index
{
    *index = -1;
    return self.completions;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,这将始终是1个请求,完成列表仅显示用户输入的每个第2个字符.

我试图搜索谷歌和SO像疯子一样,但我似乎无法找到任何解决方案..

任何帮助深表感谢.

cocoa autocomplete objective-c nstextfield

8
推荐指数
1
解决办法
5155
查看次数

Swift 3:有没有办法同时将对象转换为类和协议?

我已经阅读了Apple的Swift iBook(类型转换和协议)的相关部分,但我似乎找到了一种方法来指定对象是符合特定协议的特定类的实例.

作为一个例子tableView(_: , cellForRowAt: )我希望将由返回的单元格转换tableView.dequeueReusableCell(withIdentifier: reuseID, for: indexPath)UITableViewCell符合RLMEntityCapableCell协议的子类(只是指定构造item函数有一个变量,称为该实例Object,或其子类之一).

这条路线有效,但双重铸造似乎过度:

protocol RLMEntityCapableCell: class  {
     var item: Object { get set }
}

 public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    var cell = tableView.dequeueReusableCell(withIdentifier: reuseID, for: indexPath) as! RLMEntityCapableCell // Cast here so we can set item
    cell.item = items[indexPath.row]
    return cell as! UITableViewCell // Cast again so the return type is right… …
Run Code Online (Sandbox Code Playgroud)

existential-type ios swift swift-protocols swift3

8
推荐指数
1
解决办法
1610
查看次数