0
- (IBAction)sendMessage:(id)sender
{
    NSString* conversationFile = [@"~/" stringByAppendingPathComponent:@"conversation.txt"];
    BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:conversationFile];

    if (fileExists == FALSE)
    {
        [self doShellScript:@"do shell script \"cd ~/; touch conversation.txt\""];
    }

    NSString *conversationContent = [[NSString alloc] stringWithContentsOfFile:@"~/conversation.txt" encoding:NSUTF8StringEncoding error:NULL];
    NSString *myMessage = [[messageBox stringValue]copy];

    NSString *combinedContent = [NSString stringWithFormat:@"%@ \r\n %@", conversationContent, myMessage];
    [[[myConversationBox textStorage] mutableString] setString: combinedContent];
    [combinedContent writeToFile:@"~/conversation.txt" atomically:YES encoding:NSUTF8StringEncoding error:NULL];

}

上面的代码出现以下错误

2011-07-07 21:38:08.703 iMessages[86493:903]-[NSPlaceholderString stringWithContentsOfFile:encoding:error:]: 无法识别的选择器发送到实例 0x100111690

2011-07-07 21:38:08.704 iMessages[86493:903]-[NSPlaceholderString stringWithContentsOfFile:encoding:error:]: 无法识别的选择器发送到实例 0x100111690

4

2 回答 2

2

stringWithContentsOfFile:encoding:error:是 的类方法NSString,而不是实例方法,因此您不需要(不应该)首先分配它。

NSString *conversationContent = [NSString stringWithContentsOfFile:@"~/conversation.txt" encoding:NSUTF8StringEncoding error:NULL];
于 2011-07-08T01:46:44.710 回答
1

使用initWithContentsOfFile代替stringWithContentsOfFile或删除alloc呼叫。所以有:

NSString *conversationContent = [[NSString alloc] initWithContentsOfFile:@"~/conversation.txt" encoding:NSUTF8StringEncoding error:NULL];

或者

NSString *conversationContent = [NSString stringWithContentsOfFile:@"~/conversation.txt" encoding:NSUTF8StringEncoding error:NULL];
于 2011-07-08T01:47:34.880 回答